测试代码中同时有application.yml和bootstrap.yml等配置文件的时候,项目启动过程中会读取什么配置参数的问题。
项目代码
@RestController
public class TestController {
@Value("${spring.application.name:value1}")
public String value1;
@Value("${test.value:testValue}")
public String testValue;
@GetMapping(value = "testTime",name = "testTime", path = "testTime")
public String testTime(){
log.info("testTime start");
log.info("testTime end");
return LocalDateTime.now().toString();
}
@GetMapping("value1")
public String value1(){
return value1;
}
@GetMapping("testValue")
public String testValue(){
return testValue;
}
}
使用最简单的代码,读取配置文件中的值
仅有bootstrap.yml文件
请求 | 值 |
---|---|
localhost:8080/value1 | value1 |
localhost:8080/testValue | testValue |
结论:读取了bootstrap.yml 文件(需要引入springcloud的依赖)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
仅有application.yml
请求 | 值 |
---|---|
localhost:8080/value1 | applicationName |
localhost:8080/testValue | applicationTestValue |
结论:读取了application.yml 中的值
仅有bootstrap.properties
请求 | 值 |
---|---|
localhost:8080/value1 | bootstrapPropertiesName |
localhost:8080/testValue | bootstrapPropertiesTestValue |
结论:读取了application.yml 中的值
仅有application.properties
请求 | 值 |
---|---|
localhost:8080/value1 | applicationPropertiesName |
localhost:8080/testValue | applicationPropertiesTestValue |
结论:读取了application.yml 中的值
同时有application.yml 和 application.properties
请求 | 值 |
---|---|
localhost:8080/value1 | applicationPropertiesName |
localhost:8080/testValue | applicationPropertiesTestValue |
结论:读取了application.properties 覆盖了
同时有bootstrap.yml 和 bootstrap.properties
请求 | 值 |
---|---|
localhost:8080/value1 | bootstrapPropertiesName |
localhost:8080/testValue | bootstrapPropertiesTestValue |
结论:读取了bootstrap.properties 覆盖了
同时有bootstrap.yml 和 bootstrap.properties 和 application.yml
请求 | 值 |
---|---|
localhost:8080/value1 | applicationTestValue |
localhost:8080/testValue | applicationName |
结论:读取了application.yml,优先级更高
同时有bootstrap.yml 和 bootstrap.properties 和 application.yml 和application.properties
请求 | 值 |
---|---|
localhost:8080/value1 | applicationPropertiesName |
localhost:8080/testValue | applicationPropertiesTestValue |
结论:读取了application.properties,优先级更高
接入apollo
优先读取 apollo中的配置内容