java - 具有不同文件名的 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=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
预期结果:homeDir
。
我已经浏览了下面的链接和其他博客。
Springboot 文档
SO,SO。
问题/问题:为什么homeDir
不从中获取值()Users/<userid>/application.properties
?
任何帮助将不胜感激。
解决方案
即使不添加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
,这也有效。我这样做是为了测试环境变量是否也是从路径本身读取的。
话虽如此,您的配置有问题,并且可能缺少一些小设置。我已经在这里发布了我的代码,因此请随时查看并与您的代码进行比较。
希望有帮助,
干杯
推荐阅读
- html - 内部页面链接在 iOS Safari 浏览器中不起作用
- php - PHP 尝试安全发送邮件 - 找不到 PHPMailer 类
- java - 我认为 printf 和字符串连接;这个未来的初学者看起来很暗淡
- google-app-maker - appmaker 开发环境在 chrome 中丢弃窗口
- html - 为什么与其他字体相比增加不成比例的字体大小?
- c - 分配连续内存以包含具有灵活数组成员的多个结构
- xpath - 使用 ImportHTML 时收到错误“导入的内容为空”
- javascript - JS Canvas putImageData 渲染色差
- django - Django/Nginx docker 镜像返回错误请求 (400)
- powershell - 将文件夹 A 中的每个 ZIP 文件提取到单独的文件夹中(文件夹是手动创建的并且它们存在)