SpringBoot現(xiàn)在基本上都是使用application-XXX.yml(生產(chǎn)環(huán)境為pro,開發(fā)測試環(huán)境為dev)來配置項目中的一些配置條件,在springboot中還可以通過從yml文件中將yml中的數(shù)據(jù)直接讀取出來。
站在用戶的角度思考問題,與客戶深入溝通,找到蔚縣網(wǎng)站設計與蔚縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設計制作、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋蔚縣地區(qū)。
1.yml文件(這里設置參數(shù)的時候往往設置兩層前綴,避免在調(diào)用的時候該屬性中的部分參數(shù)名與計算機中的某些名字沖突)
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ù)值,并且將讀取出來的值賦予到指定的屬性上
/** * 將配置文件中配置的每一個屬性的值,映射到這個組件中 * @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定; * prefix = "testdemo.person":配置文件中哪個下面的所有屬性進行一一映射(yml文件中的參數(shù)名要和JavaBean中的屬性名保持一致) * * 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能; * */ @Component @ConfigurationProperties(prefix = "testdemo.person") public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private Mapmaps; private List
3.pom.xml文件中導入依賴配置(注:這里可能需要啟動一下項目,使之生效)
org.springframework.boot spring-boot-configuration-processor true
4.@value 注解獲取yml配置文件中的數(shù)據(jù),以及@Validated進行數(shù)據(jù)校驗
@Component @Validated public class Person { /** ** * */ //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 maps; private List
5.@ConfigurationProperties(prefix = "person") 和 @value的區(qū)別
| | @ConfigurationProperties | @Value |
| ---------- |------------------------ | ------ |
| 功能 | 批量注入配置文件中的屬性 | 一個個指定 |
| 松散綁定(松散語法) | 支持 | 不支持 |
| SpEL | 不支持 | 支持 |
| JSR303數(shù)據(jù)校驗 | 支持 | 不支持 |
| 復雜類型封裝 | 支持 | 不支持 |
6.總結(jié)
配置文件yml還是properties他們都能獲取到值;
如果說,我們只是在某個業(yè)務邏輯中需要獲取一下配置文件中的某項值,使用@Value;
如果說,我們專門編寫了一個javaBean來和配置文件進行映射,我們就直接使用@ConfigurationProperties;
以上就是本次介紹的全部相關知識點,感謝大家的學習和對創(chuàng)新互聯(lián)的支持。