【问题标题】:springboot config externalization with different file name具有不同文件名的spring boot config外部化
【发布时间】: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=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 预期结果:@987654346 @。

我已经浏览了以下链接和其他博客。
Springboot doc
SO, SO

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

【问题讨论】:

  • 真正的问题是什么?
  • 我想得到homeDir 作为结果而不是其他结果。
  • 我有几个问题,1) in project root directorysrc ? 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


【解决方案1】:

即使不添加spring.config.name,这肯定会按预期工作。

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

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

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

希望对你有帮助,

干杯

【讨论】:

    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 2015-10-27
    • 2016-06-11
    • 2021-02-01
    • 1970-01-01
    • 2019-04-29
    • 2021-09-01
    • 2015-01-03
    相关资源
    最近更新 更多