java - Spring Boot 2.1.3.RELEASE : Not able to read environment properties from application. 属性

标签 java spring spring-boot docker environment-variables

我正在尝试从我的 application.properties 中读取环境变量 domains.integrationService=${INTEGRATION_SERVICE_DOMAIN:http://localhost:1337}

env 属性设置在我的 docker 容器内(已检查),但不知何故 spring 无法从 .properties 读取它。因此,它最终设置http://localhost:1337

这在使用 2.0.0 版本的 SpringBoot 的其他项目中运行良好。

我认为他们放弃了这个功能。我不想在项目的 .properties 中对这些值进行硬编码。

我在 docker 中的 .env

INTEGRATION_SERVICE_DOMAIN=https://dummy.com

我的 Docker 运行命令

docker run -d -p 1100:1100 --restart except-stopped --env-file ~/.env --network=\"host\"-v/var/log/dummy-project:/usr/src/app/logs -v/tmp:/usr/src/app/tmp --name dummy-project

如果有任何解决方案请告诉我。

最佳答案

只需相信 Spring Boot 开箱即用即可正确完成工作。

如上所述in the documentation ,PropertySource 将首先读取属性文件,然后使用环境变量中的值覆盖加载的值(以及其他位置,请参阅文档了解所有可能性和优先顺序)。

因此,如果您的 application.properties 包含:

domains.integrationService=http://localhost:1337

您可以通过设置类似名称的环境变量来覆盖此“默认”值。在此示例中,至少会自动选取 domains.integrationServiceDOMAINS_INTEGRATION_SERVICE 环境变量来覆盖 application.properties 中的值。但它本身不会反转单词,因此 INTEGRATION_SERVICE_DOMAIN 不起作用。

尝试一下(在docker之外):

export DOMAINS_INTEGRATION_SERVICE=https://dummy.com

关于java - Spring Boot 2.1.3.RELEASE : Not able to read environment properties from application. 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55918859/

相关文章:

java - 在独立的 Java 应用程序中使用 Spring 3 Autowiring

java - Spring Security 通过 session ID 获取登录用户

spring-boot - 当 API 中未发送必填字段值时,如何在 swagger 中自定义错误消息?

java - 无法使用 java 11 在 Spring Boot 中加载日志记录资源文件

java - 数组空指针异常

Java下载一个目录下的所有文件和文件夹

java - 如何在Java中使用Canvas画一个圆

java - CMD 正在关闭并且不让看到结果(Java,从 .bat 运行 .jar)

java - Spring错误java.lang.NullPointerException

java - Spring Data Mongo + 延迟加载 + REST Jackson