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