我在通过按spring.profiles.active
属性指定活动配置文件来覆盖默认应用程序属性时遇到问题。
我已经开发了一个示例项目来复制这个问题。我有 2 个 application.yml 文件:
应用程序-default.yml
spring:
profiles:
active: local
test:
value: "This is the test value for application properties of default"
应用程序-local.yml
test:
value: "This is the test value for application properties of local"
然后我开发了一个组件来打印测试值:
@Component
public class TestComponent {
@Value("${test.value}")
private String testValue;
@PostConstruct
public void postConstruct() {
System.out.println(testValue);
}
}
这段代码的输出是:
2021-01-07 16:19:01.080 INFO 335505 --- [ main] com.test.Application : The following profiles are active: local
This is the test value for application properties of default
2021-01-07 16:19:01.419 INFO 335505 --- [ main] com.test.Application : Started Application in 0.944 seconds (JVM running for 1.441)
我预计输出将是:
This is the test value for application properties of local
我知道使用application.yml
而不是application-default.yml
按预期工作,但我的目标是使用application.yml
来保存所有配置文件共有的基本属性,并通过使用配置文件指定特定于环境的配置。
我正在使用 spring-boot 2.4.0,build.gradle
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.4.0'
}
为什么这个属性不被覆盖?