Spring找不到属性文件

问题描述 投票:0回答:2

我尝试了各种方法来查找文件并始终得到此异常:

java.io.FileNotFoundException:无法打开类路径资源[src / main / resources / sport.properties],因为它不存在

这是我的文件夹结构:

这个String中的哪条路径是正确的? @PropertySource( “类路径:/src/main/resources/sport.properties”)

spring
2个回答
1
投票

这个String中的哪条路径是正确的? @PropertySource("classpath:/src/main/resources/sport.properties")

这是不正确的,因为你混合了两个“名称空间”。

  • 字符串"classpath:/src/main/resources/sport.properties"是一个URI。
  • "classpath"意味着你告诉Spring查看应用程序的运行时类路径。
  • "/src/main/resources/sport.properties"不是运行时类路径上的名称。相反,它是文件系统中相对于Eclipse项目目录的路径名。

由于您在Eclipse中使用Maven,因此您需要了解资源树是否已添加到类路径中;即"${MAVEN_PROJECT}/src/main/resources/a/b"在运行时类路径上变为"/a/b"

  • 构成应用程序的所有Maven项目的"${MAVEN_PROJECT}/src/main/resources"目录以这种方式添加到类路径中。
  • 在单元测试时,qazxsw poi目录也会被添加到类路径中。

简而言之,你应该使用"${MAVEN_PROJECT}/src/test/resources"


0
投票

我建议使用下面提到的@PropertySource("classpath:/sport.properties")进行集成测试。

TestPropertySource

@TestPropertySource是一个类级注释,用于配置属性文件的位置()和内联属性(),以便为集成测试的ApplicationContext添加到Environment的PropertySource集合中。

优先级: - 测试属性源的优先级高于从操作系统环境或Java系统属性加载的属性源,以及应用程序通过@PropertySource或编程方式(例如,通过ApplicationContextInitializer或其他方式)以声明方式添加的属性源。因此,测试属性源可用于有选择地覆盖系统和应用程序属性源中定义的属性。此外,内联属性()的优先级高于从资源位置()加载的属性。

© www.soinside.com 2019 - 2024. All rights reserved.