spring boot无法从application.yml正确加载配置文件

exdqitrt  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(471)

我有一个springboot项目,我正在为它注入价值观 application.yml 通过 application.properties (这种设计对我来说很有意义,因为有很多微服务和 application.properties 实际上是一个符号链接)如下所示:
application.properties :

PROPERTY_YAML=something

然后在 application.yml :

app:
  property:
    yaml: ${PROPERTY_YAML}

这工作很好,当我通过 Environment.getProperty 或通过 @Value 一切正常。但是,当我尝试以相同的方式设置Spring轮廓时,它不起作用。设置 SPR_PROFILE=my_profileapplication.properties 以及 application.yml 作为

spring:
  profiles:
    active: ${SPR_PROFILE}

导致Spring不一致时 Environment.activeProfiles 退货 ${SPR_PROFILE} (spring正在这个配置文件下运行)和 Environment.getProperty("spring.profiles.active") 退货 my_profile .
这是预期的行为吗?为什么?spring是否在实际解析/替换占位符之前加载配置文件?
我目前的解决方法是 spring.profiles.active=my_profileapplication.properties 但我想知道,为什么Spring会这样。

ws51t4hk

ws51t4hk1#

我不能回答具体的问题,但我不会两者都用 application.properties 以及 application.yml 根据spring文档,两者具有相同的优先级,无法保证哪一个先加载:
在打包的jar之外配置特定于应用程序的属性(application-{profile}.properties和yaml变体)。
打包在jar中的特定于概要文件的应用程序属性(application-{profile}.properties和yaml变体)。
打包jar之外的应用程序属性(application.properties和yaml变体)。
打包在jar中的应用程序属性(application.properties和yaml变体)。
我会把所有的共享属性放在一个自定义的 *.properties 文件-最好是配置文件(例如。 applicaion-dev.properties )并使用spring的各种方法之一激活该概要文件,这应该保证在默认属性之前加载。

相关问题