Spring Boot外部配置加载顺序
Spring Boot 外部配置的加载顺序是:
- 命令行参数(
java -jar app.jar --name="Spring"
)。 - 操作系统环境变量。
- 由
SpringApplication.setDefaultProperties
方法设置的默认属性。 - 在
application.properties
或application.yml
文件中的属性。 - 在
@TestPropertySource
注解中的测试属性。 - 在
RandomValuePropertySource
的random.*
属性。 - 由
SpringApplication.addInitializers
添加的初始化器。 - 应用程序的
@PropertySource
注解。
这个加载顺序是按照 Spring Boot 文档中提到的顺序进行的,并且这个加载顺序是先高优先级的配置覆盖低优先级的配置。
以下是一个简单的例子,演示如何在 Spring Boot 应用程序中设置默认属性,并根据加载顺序进行覆盖:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
@PropertySource("classpath:application.properties")
public class ConfigLoadingApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(ConfigLoadingApplication.class);
app.setDefaultProperties(Collections.singletonMap("defaultName", "SpringBoot"));
app.run(args);
}
}
在这个例子中,application.properties
文件中的属性会被类路径下的 application.properties
文件中的属性覆盖,如果这些文件都设置了相同的属性,例如 name=SpringApp
,那么根据加载顺序,最终的值会是 SpringBoot
,因为默认属性是在 application.properties
文件之后设置的。
评论已关闭