Spring Boot外部配置加载顺序
warning:
这篇文章距离上次修改已过414天,其中的内容可能已经有所变动。
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 文件之后设置的。
评论已关闭