java - Apache Commons 配置将属性设置为环境变量 - 如何?

标签 java spring-boot apache-commons-config

我的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/

相关文章:

java - 解析复杂的 JSON 文件

java - application.yml 中的@Value 返回错误值

java - SpringBoot完全可执行的jar,内部没有依赖

java.lang.IllegalStateException : No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registered error 错误

tomcat - 由于 NoClassDefFoundError : org/apache/commons/configuration/ConfigurationFactory,无法启动 Tomcat

java - 给定一个 Configuration 对象,如何创建 PropertiesConfiguration 对象?

java - JNI-java.lang.UnsatisfiedLinkError但函数签名正确

java - InputStream.read() 返回的 int 值代表什么?

java - 任何 Apache Commons-Configuration 替代品/竞争对手?

java - 使用 Jetty maven 插件部署 war