我正在尝试将外部属性文件加载到我的Spring Boot应用程序中。最初,我在config类中使用了@PropertySource。但现在我要删除此注释,以便该类不依赖于位置。所以我尝试使用:
java -jar my-boot-ws.war --SPRING_CONFIG_NAME=file:///Users/TMP/resources/
基于此http://docs.spring.io/spring-boot/docs/current/reference/html/boot- features-external-config.html文档,但出现以下错误:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
使用注释可以正常工作,但我真的想摆脱它。任何帮助都会很棒
谢谢
**更正*
抱歉,上述命令的复制粘贴错误为:
java -jar my-boot-ws.war --spring.config.location=file:///Users/TMP/resources/
我不是在尝试更改配置文件的名称,而只是添加其他位置。如此处所述:
如果spring.config.location包含目录(而不是文件),则目录应以/结尾(并在加载之前附加从spring.config.name生成的名称)。
我的解释是,文件$ {spring.application.name} .properties将从命令行传递的– spring.config.location加载。
经过一番摸索之后,我发现了这个SpringBoot和多个外部配置文件,表明以下是正确的用法:
java -jar my-boot-ws.war --spring.config.location=file:///Users/TMP/resources/myFile.properties
我的印象是– spring.config.location将在指定目录中加载其他属性文件。根据我在链接中提到的帖子,情况并非如此。基于链接(如果已指定目录),则在该位置搜索application.properties。但同样这里的文档http://docs.spring.io/spring- boot/docs/current/reference/html/boot-features-external- config.html似乎暗示Spring Boot应用程序将在类路径上查找首先,如果可用,请抓住应用名称,以基于该名称获取其他属性文件。
但是,一旦我指定了文件名,一切都可以正常工作,所以我想我错了。