您好,歡迎來(lái)到賦能網(wǎng)!

pringboot怎么加載配置文件?Spring Boot 如何配置優(yōu)先級(jí)?

賦能網(wǎng) 2023-05-09 53

springboot具有 Spring 一切優(yōu)秀特性,是優(yōu)秀的開源框架,在進(jìn)行項(xiàng)目開發(fā)的過(guò)程中,我們經(jīng)常需要將一些變量從代碼中拿出來(lái)放在配置文件中,這樣方便之后的統(tǒng)一管理,更好的配置信息,那springboot怎么加載配置文件?下面來(lái)我們就來(lái)給大家講解一下。

1.通過(guò)@value注解實(shí)現(xiàn)參數(shù)加載

當(dāng)我們想要在某個(gè)類里面注入某個(gè)變量,通過(guò)@value注解就可以簡(jiǎn)單實(shí)現(xiàn)參數(shù)的注入!

例如application.properties文件里,配置一個(gè)config.name的變量key,值為zhangsan;

//參數(shù)定義
config.name=zhangsan

然后在對(duì)應(yīng)的類里面,通過(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ù)類型是一個(gè)對(duì)象或者數(shù)組,這個(gè)時(shí)候才用@ConfigurationProperties會(huì)是一個(gè)比較好的選擇!

配置一個(gè)對(duì)象類型的參數(shù)

例如在application.properties文件里,當(dāng)我們想配置一個(gè)對(duì)象類型的參數(shù),我們可以這樣操作!

//參數(shù)定義
config2.name=demo_1
config2.value=demo_value_1

然后,創(chuàng)建一個(gè)配置類Config2,用于將定義的變量映射到配置類里面。

@Component
@ConfigurationProperties(prefix = "config2")
public class Config2 {
public String name;
public String value;
//...get、set
}

讀取數(shù)據(jù)的方式,也很簡(jiǎn)單,直接注入到對(duì)應(yīng)的類里面就可以了;

@RestController
public class HelloController {
@Autowired
private Config2 config2;
@GetMapping("config2")
public String config2(){
return JSON.toJSonString(config2);
}
}

配置一個(gè)Map類型的參數(shù)

例如在application.properties文件里,當(dāng)我們想配置一個(gè) 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)建一個(gè)配置類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);
}
}

配置一個(gè)List類型的參數(shù)

例如在application.properties文件里,當(dāng)我們想配置一個(gè) 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)建一個(gè)配置類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)先級(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 注解類上的 @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)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: