Spring Boot无法从application.yml正确加载配置文件

我有一个Spring Boot项目,我正在通过application.ymlapplication.properties注入值(这种设计对我来说很有意义,因为有很多微服务,而application.properties实际上是一个符号链接):

application.properties中:

PROPERTY_YAML=something

,然后在application.yml中:

app:
  property:
    yaml: ${PROPERTY_YAML}

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

spring:
  profiles:
    active: ${SPR_PROFILE}

Environment.activeProfiles返回${SPR_PROFILE}(并且spring在此配置文件下运行)并且属性Environment.getProperty("spring.profiles.active")返回my_profile时,导致春季不一致。

这是预期的行为吗?这是为什么?在实际解析/替换占位符之前,弹簧载荷轮廓是否存在?

我当前的解决方法是在spring.profiles.active=my_profile中设置application.properties,但我想知道为什么春天会那样。

songlianghao 回答:Spring Boot无法从application.yml正确加载配置文件

我无法回答具体问题,但是我不会同时使用application.propertiesapplication.yml,因为根据Spring documentation两者都具有相同的优先级,并且不能保证首先加载:

  
      包装的jar之外的
  1. 特定于配置文件的应用程序属性   (application- {profile} .properties和YAML变体)。

  2.   
  3. 打包在jar中的特定于配置文件的应用程序属性   (application- {profile} .properties和YAML变体)。

  4.   
  5. 打包的jar之外的应用程序属性   (application.properties和YAML变体)。

  6.   
  7. 打包在jar中的应用程序属性   (application.properties和YAML变体)。

  8.   

我会将所有共享属性放在自定义*.properties文件中-最好使用一个配置文件(例如applicaion-dev.properties),然后使用Spring的various ways中的一个激活该配置文件,这应该保证加载在默认属性之前。

本文链接:https://www.f2er.com/3095967.html

大家都在问