首页 > 解决方案 > 具有不同文件名的 springboot 配置外部化

问题描述

我正在学习 Spring Boot 配置外部化。我希望我的应用程序从任何外部文件 ( /Users/<userid>/application.properties) 中读取配置。

我创建了 spring-web 项目,并添加了spring.config.location=${user.home}条目src/main/resource/application.properties

testConfig是我试图通过我的 Controller 类中的以下代码访问的配置属性名称。

 @Value("${testConfig})
 private String configValue;

testConfig在不同的地方给出了不同的值。

testConfig=InsideJarsrc/main/resources/application.properties文件中。 testConfig=ApplicationRoot在项目根目录application.properties文件中。
testConfig=homeDir在用户主目录/User/<userid>/application.properties文件中。

我是如何运行应用程序的,结果如何?

1. From different directory than project root  

命令java -jar ../Downloads/first-springboot-app/target/first-springboot-app-0.0.1-SNAPSHOT.jar -Dspring.config.location=file:/User/${LOGNAME}/application.properties 结果InsideJar 预期结果homeDir

.

2. From Project root directory    

命令java -jar target/first-springboot-app-0.0.1-SNAPSHOT.jar -Dspring.config.location=file:/Users/${LOGNAME}/application.properties

结果applicationRootDir预期结果homeDir

3. Added spring.config.name=application
4. Added spring.config.name=application.properties

以上(3,4)都给出了相同的结果。
结果applicationRootDir 预期结果homeDir

我已经浏览了下面的链接和其他博客。
Springboot 文档
SOSO

问题/问题:为什么homeDir不从中获取值()Users/<userid>/application.properties
任何帮助将不胜感激。

标签: javaspringspring-boot

解决方案


即使不添加spring.config.name.

我已经运行了一个简单的 spring 应用程序,它只web依赖于 start.spring.io 并添加了-Dspring.config.location=file:/Users/my-user/application.properties. 按预期工作。

然后我再次测试-Dspring.config.location=file:/Users/${MY_USER}/application.properties并声明MY_USER=my-user,这也有效。我这样做是为了测试环境变量是否也是从路径本身读取的。

话虽如此,您的配置有问题,并且可能缺少一些小设置。我已经在这里发布了我的代码,因此请随时查看并与您的代码进行比较。

希望有帮助,

干杯


推荐阅读