繁体   English   中英

通过环境变量覆盖 Spring 引导 yaml 属性

[英]Override Spring Boot yaml property via environment variable

使用 Spring Boot 2.6.1,如果我有一个如下所示的application.properties文件:

spring.datasource.url="jdbc://blahblah"

我可以在运行时使用名为spring.datasource.url的环境变量覆盖该值,我的应用程序将连接到 env var 中指定的数据库。

但是,如果我有一个等效的application.yaml文件,那么以这种方式指定环境变量似乎没有效果。

spring:
  datasource:
    url: "jdbc://localhost..."

但是,如果我将环境变量重命名为SPRING_DATASOURCE_URL ,则覆盖将再次起作用。 这似乎在其他属性中也是一致的(不仅仅是数据源 url)。

浏览文档并不清楚为什么会出现这种情况,除了 yaml 配置似乎通常与“普通”属性文件略有不同。

这种行为是预期的吗?

如果我没有误解,您应该创建 application-{profile}.yml 文件并为环境指定数据源 url

文档中所述,您应该使用环境变量SPRING_DATASOURCE_URL来设置spring.datasource.url属性。 我很惊讶spring.datasource.url在配置为环境变量时完全有效,我不会依赖它继续这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM