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