springboot具有 Spring 一切優(yōu)秀特性,是優(yōu)秀的開源框架,在進行項目開發(fā)的過程中,我們經(jīng)常需要將一些變量從代碼中拿出來放在配置文件中,這樣方便之后的統(tǒng)一管理,更好的配置信息,那springboot怎么加載配置文件?下面來我們就來給大家講解一下。
1.通過@value注解實現(xiàn)參數(shù)加載
當我們想要在某個類里面注入某個變量,通過@value注解就可以簡單實現(xiàn)參數(shù)的注入!
例如application.properties文件里,配置一個config.name的變量key,值為zhangsan;
//參數(shù)定義 config.name=zhangsan
然后在對應(yīng)的類里面,通過參數(shù)@value注入即可!
@RestController public class HelloController { @Value("${config.name}") private String config; @GetMapping("config") public String config(){ return JSON.toJSonString(config); } }
使用@value注解注入配置,通常情況下有個要求就是,注解里面的變量,必須在application.properties文件里面事先定義好,否則啟動報錯!
當然,如果我們不想讓它抱錯,我們可以給它一個缺省值xxx,比如:
@Value("${config.name:xxx}") private String config;
這樣,SpringBoot 項目在啟用時不會報錯!
2.通過@ConfigurationProperties注解實現(xiàn)參數(shù)加載
某些場景下,@value注解并不能滿足我們所有的需求,比如參數(shù)配置的數(shù)據(jù)類型是一個對象或者數(shù)組,這個時候才用@ConfigurationProperties會是一個比較好的選擇!
配置一個對象類型的參數(shù)
例如在application.properties文件里,當我們想配置一個對象類型的參數(shù),我們可以這樣操作!
//參數(shù)定義 config2.name=demo_1 config2.value=demo_value_1
然后,創(chuàng)建一個配置類Config2,用于將定義的變量映射到配置類里面。
@Component @ConfigurationProperties(prefix = "config2") public class Config2 { public String name; public String value; //...get、set }
讀取數(shù)據(jù)的方式,也很簡單,直接注入到對應(yīng)的類里面就可以了;
@RestController public class HelloController { @Autowired private Config2 config2; @GetMapping("config2") public String config2(){ return JSON.toJSonString(config2); } }
配置一個Map類型的參數(shù)
例如在application.properties文件里,當我們想配置一個 Map 類型的參數(shù),我們可以這樣操作!
//參數(shù)定義 config3.map1.name=demo_id_1_name config3.map1.value=demo_id_1_value config3.map2.name=demo_id_2_name config3.map2.value=demo_id_2_value
然后,創(chuàng)建一個配置類Config3,用于將定義的變量映射到配置類里面。
@Component @ConfigurationProperties(prefix = "config3") public class Config3 { private Mapmap1 = new HashMap<>(); private Mapmap2 = new HashMap<>(); //...get、set }
讀取數(shù)據(jù)的方式,與之類似!
@RestController public class HelloController { @Autowired private Config3 config3; @GetMapping("config3") public String config3(){ return JSON.toJSonString(config3); } }
配置一個List類型的參數(shù)
例如在application.properties文件里,當我們想配置一個 List 類型的參數(shù),我們可以這樣操作!
//參數(shù)定義 config4.userList[0].enable=maillist_1_enable config4.userList[0].name=maillist_1_name config4.userList[0].value=maillist_1_value config4.userList[1].enable=maillist_2_enable config4.userList[1].name=maillist_2_name config4.userList[1].value=maillist_2_value config4.userList[2].enable=maillist_3_enable config4.userList[2].name=maillist_3_name config4.userList[2].value=maillist_3_value
然后,創(chuàng)建一個配置類Config4,用于將定義的變量映射到配置類里面。
@Component @ConfigurationProperties(prefix = "config4") public class Config4 { private ListuserList; public ListgetUserList() { return userList; } public void setUserList(ListuserList) { this.userList = userList; } }
public class UserEntity { private String enable; private String name; private String value; //...get、set }
讀取數(shù)據(jù)的方式,與之類似!
@RestController public class HelloController { @Autowired private Config4 config4; @GetMapping("config4") public String config4(){ return JSON.toJSonString(config4); } }
Spring Boot 如何配置優(yōu)先級?
以下是常用的 Spring Boot 配置形式及其加載順序(優(yōu)先級由高到低):
1. 命令行參數(shù)
2. 來自 java:comp/env 的 JNDI 屬性
3. Java 系統(tǒng)屬性(System.getProperties())
4. 操作系統(tǒng)環(huán)境變量
5. RandomValuePropertySource 配置的 random.* 屬性值
6. 配置文件(YAML 文件、Properties 文件)
7. @Configuration 注解類上的 @PropertySource 指定的配置文件
8. 通過 SpringApplication.setDefaultProperties 指定的默認屬性
以上所有形式的配置都會被加載,當存在相同配置內(nèi)容時,高優(yōu)先級的配置會覆蓋低優(yōu)先級的配置;存在不同的配置內(nèi)容時,高優(yōu)先級和低優(yōu)先級的配置內(nèi)容取并集,共同生效,形成互補配置。
Spring Boot 配置優(yōu)先級的順序就是以上這些,使用Spring Boot 的時候,我們要學(xué)會配置,使其在不同的環(huán)境中運行。最后大家如果想要了解更多java架構(gòu)師知識,敬請關(guān)注賦能網(wǎng)。
本文鏈接:
本文章“pringboot怎么加載配置文件?Spring Boot 如何配置優(yōu)先級?”已幫助 53 人
免責聲明:本信息由用戶發(fā)布,本站不承擔本信息引起的任何交易及知識產(chǎn)權(quán)侵權(quán)的法律責任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細解答:
咨詢熱線:4008-569-579