先給大家介紹下spring boot 配置加載順序,具體內(nèi)容如下所示:

使用 Spring Boot 會涉及到各種各樣的配置,如開發(fā)、測試、線上就至少 3 套配置信息了。Spring Boot 可以輕松的幫助我們使用相同的代碼就能使開發(fā)、測試、線上環(huán)境使用不同的配置。
在 Spring Boot 里面,可以使用以下幾種方式來加載配置。本章內(nèi)容基于 Spring Boot 2.0 進行詳解。
1、properties文件;
2、YAML文件;
3、系統(tǒng)環(huán)境變量;
4、命令行參數(shù);
等等……
我們可以在 Spring Beans 里面直接使用這些配置文件中加載的值,如:
1、使用 @Value 注解直接注入對應的值,這能獲取到 Spring 中 Environment 的值;
2、使用 @ConfigurationProperties 注解把對應的值綁定到一個對象;
3、直接獲取注入 Environment 進行獲取;
配置屬性的方式很多,Spring boot使用了一種獨有的 PropertySource 可以很方便的覆蓋屬性的值。
配置屬性加載的順序如下:
1、開發(fā)者工具 `Devtools` 全局配置參數(shù);
2、單元測試上的 `@TestPropertySource` 注解指定的參數(shù);
3、單元測試上的 `@SpringBootTest` 注解指定的參數(shù);
4、命令行指定的參數(shù),如 `java -jar springboot.jar --name="Java技術棧"`;
5、命令行中的 `SPRING_APPLICATION_JSONJSON` 指定參數(shù), 如 `java -Dspring.application.json='{"name":"Java技術棧"}' -jar springboot.jar`
6、`ServletConfig` 初始化參數(shù);
7、`ServletContext` 初始化參數(shù);
8、JNDI參數(shù)(如 `java:comp/env/spring.application.json`);
9、Java系統(tǒng)參數(shù)(來源:`System.getProperties()`);
10、操作系統(tǒng)環(huán)境變量參數(shù);
11、`RandomValuePropertySource` 隨機數(shù),僅匹配:`ramdom.*`;
12、JAR包外面的配置文件參數(shù)(`application-{profile}.properties(YAML)`)
13、JAR包里面的配置文件參數(shù)(`application-{profile}.properties(YAML)`)
14、JAR包外面的配置文件參數(shù)(`application.properties(YAML)`)
15、JAR包里面的配置文件參數(shù)(`application.properties(YAML)`)
16、`@Configuration`配置文件上 `@PropertySource` 注解加載的參數(shù);
17、默認參數(shù)(通過 `SpringApplication.setDefaultProperties` 指定);
數(shù)字小的優(yōu)先級越高,即數(shù)字小的會覆蓋數(shù)字大的參數(shù)值,我們來實踐下,驗證以上配置參數(shù)的加載順序。
1、在主應用程序中添加 Java 系統(tǒng)參數(shù)。
@Bean
public CommandLineRunner commandLineRunner() {
return (args) -> {
System.setProperty("name", "javastack-system-properties");
};
}
名稱欄目:詳解SpringBoot配置加載順序及屬性加載順序-創(chuàng)新互聯(lián)
文章URL:http://chinadenli.net/article24/dphece.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、移動網(wǎng)站建設、品牌網(wǎng)站建設、靜態(tài)網(wǎng)站、ChatGPT、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)