我的SpringBoot项目有依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.4</version>
</dependency>
我的 bootstrap.properties 文件包含诸如 aws.s3.name=${env:S3_NAME}
根据 https://commons.apache.org/proper/commons-configuration/userguide/howto_basicfeatures.html 的文档,它应该可以使用这种语法。
但是当我尝试使用它时:
@Value("${aws.s3.name}")
private String bucketName;
在我的 @Service 类中,它被初始化为“S3_NAME”。
为什么?我做错了什么?编辑:我忘记添加我正在 docker 容器中启动应用程序,传递 -e S3_NAME=some_bucket_name 以及我的 docker run 命令
最佳答案
事实证明,我们没有使用正确的工具(或正确) - 正确的方法是将环境变量属性从 bootstrap.properties
移动到 application.properties
-然后它就开始工作了!
我不知道为什么这两个文件在 Spring Boot 中的功能存在差异。
关于java - Apache Commons 配置将属性设置为环境变量 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429519/