我有一个 Spring Boot 项目,我正在application.yml
通过以下方式注入值application.properties
(这种设计对我来说很有意义,因为有很多微服务,application.properties
实际上是一个符号链接),如下所示:
在application.properties
:
PROPERTY_YAML=something
然后在application.yml
:
app:
property:
yaml: ${PROPERTY_YAML}
这工作得很好,当我通过Environment.getProperty
或通过@Value
一切访问它时,一切都按预期工作。但是,当我尝试以相同的方式设置 Spring Profile 时,它不起作用。设置和作为SPR_PROFILE=my_profile
_application.properties
application.yml
spring:
profiles:
active: ${SPR_PROFILE}
Environment.activeProfiles
当返回${SPR_PROFILE}
(并且 spring 在此配置文件下运行)和属性Environment.getProperty("spring.profiles.active")
返回时导致 spring 不一致my_profile
。
这是预期的行为吗?这是为什么?在实际解析/替换占位符之前是否加载配置文件?
我目前的解决方法是设置spring.profiles.active=my_profile
,application.properties
但我想知道,为什么 spring 会这样。