【发布时间】:2020-02-16 11:16:04
【问题描述】:
我正在学习 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=InsideJar 在src/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预期结果:@987654346 @。
我已经浏览了以下链接和其他博客。
Springboot doc
SO, SO。
问题/问题:为什么没有从Users/<userid>/application.properties 获取值(homeDir)?
任何帮助将不胜感激。
【问题讨论】:
-
真正的问题是什么?
-
我想得到
homeDir作为结果而不是其他结果。 -
我有几个问题,1)
in project root directory是src ? 2) where are passing the value for this${LOGNAME}` 占位符? @new_programmer -
@Deadpool: 1.
src文件夹外的根目录。 2. ${LOGNAME} 替换为用户ID。这样/User/<userId>的路径形式(这是我的application.properties所在的目录) -
您使用的是哪个 Spring Boot 版本,@new_programmer?
标签: java spring spring-boot