没有classpath资源,spring.config.location无法正常工作

时间:2018-01-05 11:18:41

标签: spring spring-mvc spring-boot

我的配置类如下

@Configuration
@PropertySource(value= "classpath:conf/agent.properties")
public class AppConfig{

使用

运行应用程序时
java -jar app.jar spring.config.location=path-to-external-property-file

应用程序运行正常并从外部属性文件中获取属性,但是如果丢失了类路径中的属性文件FileNotFoundException,那么这是预期的行为吗?对我来说,它应该与外部属性一起使用,它不应该关心类路径资源并停止运行。

为了解决这个问题,我目前正在使用ignoreResourceNotFound = true

1 个答案:

答案 0 :(得分:0)

您似乎误解了spring-config-location的含义   默认情况下,docs会在enter image description here中搜索项目中某些位置application.properties,..)中名为/config的文件,以设置应用程序上下文。
 您可以告诉spring您不希望在项目中使用此打包文件,并且您将使用命令行参数指定在运行时设置应用程序上下文所需的文件。这有利于使用 spring-config-location选项。

话虽如此,在您的项目中,您可能有多个配置(@Configuration)文件。有些文件需要从某个文件加载一些属性。这可以使用@PropertySource来指定,这就是您正在做的事情。这不是application.properties的替代品。 @PropertySource只是告诉spring它需要读取文件以注入特定类中指定的属性。  因此,即使您在设置AppConfig类之前指定外部配置位置弹簧,它也会查找@PropertySource中提到的来源