我在通过指定活动配置文件来重写默认应用程序属性时遇到问题 spring.profiles.active
财产。
我开发了一个示例项目来复制这个问题。我有2个application.yml文件:
应用程序-默认.yml
spring:
profiles:
active: local
test:
value: "This is the test value for application properties of default"
应用程序-本地.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
保存所有配置文件的公共基本属性,并通过使用配置文件指定特定于环境的配置。
我用的是SpringBoot2.4.0, build.gradle
```
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.4.0'
}
为什么不重写此属性?
3条答案
按热度按时间jm2pwxwz1#
这是由于spring boot加载属性的顺序造成的。创建一个包含活动概要文件和所有概要文件的公共属性的application.yml文件,并从中删除spring.profiles.active属性
application-default.yml
.您还可以在运行时选择活动概要文件,如下所示
rkttyhzu2#
默认属性文件应称为application.yml,而不是application-default.yml
只要试着重新命名它就可以了。。在这里阅读更多
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-具有特定于配置文件的外部配置文件
s1ag04yj3#
尝试将所有配置文件合并到application.yml中,如下所示。请注意
---
用于分隔纵断面。使用
SPRING_PROFILES_ACTIVE
通过环境变量选择活动配置文件。