一尘不染

Spring Boot外部配置

spring-boot

我正在尝试将外部属性文件加载到我的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加载。


阅读 396

收藏
2020-05-30

共1个答案

一尘不染

经过一番摸索之后,我发现了这个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应用程序将在类路径上查找首先,如果可用,请抓住应用名称,以基于该名称获取其他属性文件。

但是,一旦我指定了文件名,一切都可以正常工作,所以我想我错了。

2020-05-30