SpringBoot從yml配置文件中讀常用參數(shù)值實(shí)例方法
SpringBoot現(xiàn)在基本上都是使用application-XXX.yml(生產(chǎn)環(huán)境為pro,開發(fā)測(cè)試環(huán)境為dev)來配置項(xiàng)目中的一些配置條件,在springboot中還可以通過從yml文件中將yml中的數(shù)據(jù)直接讀取出來。
1.yml文件(這里設(shè)置參數(shù)的時(shí)候往往設(shè)置兩層前綴,避免在調(diào)用的時(shí)候該屬性中的部分參數(shù)名與計(jì)算機(jī)中的某些名字沖突)
test:
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 12
2.在JavaBean中讀取參數(shù)值,并且將讀取出來的值賦予到指定的屬性上
/**
* 將配置文件中配置的每一個(gè)屬性的值,映射到這個(gè)組件中
* @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關(guān)的配置進(jìn)行綁定;
* prefix = "testdemo.person":配置文件中哪個(gè)下面的所有屬性進(jìn)行一一映射(yml文件中的參數(shù)名要和JavaBean中的屬性名保持一致)
*
* 只有這個(gè)組件是容器中的組件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "testdemo.person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
3.pom.xml文件中導(dǎo)入依賴配置(注:這里可能需要啟動(dòng)一下項(xiàng)目,使之生效)
<!--導(dǎo)入配置文件處理器,配置文件進(jìn)行綁定就會(huì)有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4.@value 注解獲取yml配置文件中的數(shù)據(jù),以及@Validated進(jìn)行數(shù)據(jù)校驗(yàn)
@Component
@Validated
public class Person {
/**
* <bean class="Person">
* <property name="lastName" value="字面量/${key}從環(huán)境變量、配置文件中獲取值/#{SpEL}"></property> * <bean/>
*/
//lastName必須是郵箱格式
@Email
@Value("${person.last-name}")
private String lastName;
@Value("#{11*2}")
private Integer age;
@Value("true")
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
5.@ConfigurationProperties(prefix = "person") 和 @value的區(qū)別
| | @ConfigurationProperties | @Value |
| ---------- |------------------------ | ------ |
| 功能 | 批量注入配置文件中的屬性 | 一個(gè)個(gè)指定 |
| 松散綁定(松散語法) | 支持 | 不支持 |
| SpEL | 不支持 | 支持 |
| JSR303數(shù)據(jù)校驗(yàn) | 支持 | 不支持 |
| 復(fù)雜類型封裝 | 支持 | 不支持 |
6.總結(jié)
配置文件yml還是properties他們都能獲取到值;
如果說,我們只是在某個(gè)業(yè)務(wù)邏輯中需要獲取一下配置文件中的某項(xiàng)值,使用@Value;
如果說,我們專門編寫了一個(gè)javaBean來和配置文件進(jìn)行映射,我們就直接使用@ConfigurationProperties;
以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn),感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
- SpringBoot如何配置獲取request中body的json格式參數(shù)
- Springboot 讀取 yml 配置文件里的參數(shù)值
- Springboot自帶定時(shí)任務(wù)實(shí)現(xiàn)動(dòng)態(tài)配置Cron參數(shù)方式
- SpringBoot配置使Mybatis打印SQL執(zhí)行時(shí)的實(shí)際參數(shù)值操作
- 詳解SpringBoot配置文件啟動(dòng)時(shí)動(dòng)態(tài)配置參數(shù)方法
- SpringBoot如何讀取配置文件參數(shù)并全局使用
- springboot讀取配置文件中的參數(shù)具體步驟
- SpringBoot復(fù)雜參數(shù)應(yīng)用詳細(xì)講解
相關(guān)文章
Spring Boot實(shí)現(xiàn)微信小程序登錄
這篇文章主要為大家詳細(xì)介紹了Spring Boot實(shí)現(xiàn)微信小程序登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
java編譯后的文件出現(xiàn)xx$1.class的原因及解決方式
這篇文章主要介紹了java編譯后的文件出現(xiàn)xx$1.class的原因及解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
SpringBoot傳遞單一參數(shù)時(shí)@RequestParam和@RequestBody的區(qū)別小結(jié)
用SpringBoot框架做項(xiàng)目時(shí),經(jīng)常需要前端給后端傳遞參數(shù),本文主要介紹了SpringBoot傳遞單一參數(shù)時(shí)@RequestParam和@RequestBody的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
IntelliJ IDEA里找不到j(luò)avax.servlet的jar包的解決方法
這篇文章主要介紹了IntelliJ IDEA里找不到j(luò)avax.servlet的jar包的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
java實(shí)現(xiàn)ATM機(jī)系統(tǒng)(2.0版)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)ATM機(jī)系統(tǒng)2.0版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03

