SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解
注解@ConfigurationProperties
該注解的作用是將配置文件中配置的每一個(gè)屬性的值,映射到這個(gè)組件中。@ConfigurationProperties :告訴springboot將本類(lèi)中的所有屬性和配置文件中相關(guān)的配置進(jìn)行綁定 prefix = “person”:配置文件中哪個(gè)下面的所有屬性進(jìn)行一一映射。簡(jiǎn)言之,也就是只有這個(gè)組件是容器中的組件;才能在容器中提供的@ConfigurationProperties功能。
注解@Value
該注解就是將配置文件中的某項(xiàng)值讀出來(lái),@Value("$(key)"),其中key的值從環(huán)境變量、配置文件中獲取值
區(qū)別
該表格展示了這兩個(gè)注解的區(qū)別,其中,松散語(yǔ)法綁定的定義如下:
松散語(yǔ)法綁定:
- - person.firstName : 使用標(biāo)準(zhǔn)方法
- - person.first-name : 大寫(xiě)用-
- - person.first_name : 大寫(xiě)用_
- - PERSON_FIRST_NAME : 推薦系統(tǒng)屬性使用這種寫(xiě)法
SpEl語(yǔ)法表示:
其中,@Value可以直接計(jì)算表達(dá)式的值,如:@Value(#{11*2})
JSR303數(shù)據(jù)校驗(yàn):
注解@ConfigurationProperties(prefix = "person")可以搭配@Validated使用
復(fù)雜類(lèi)型封裝:
支持讀入類(lèi)中的所有屬性,比如,想讀如person中的所有屬性,使用@ConfigurationProperties(prefix = "person")
# 配置person的值 person.last-name=zhangsan person.age=18 person.birth=2017/12/12 person.boss=false person.maps.k1=v1 person.maps.k2=14 person.lists=a,b,v person.dog.name=二哈 person.dog.age=2
使用方法區(qū)別:
配置文件無(wú)論是yml還是properties他們都能獲取
如果說(shuō),我們只是說(shuō)在某個(gè)業(yè)務(wù)邏輯中需要獲取一下配置文件中的某項(xiàng)值,就使用@Value
如果說(shuō),我們專(zhuān)門(mén)編寫(xiě)了一個(gè)javaBean來(lái)和配置文件映射,我們就直接使用
配置文件注入值數(shù)據(jù)校驗(yàn)
注入值校驗(yàn)主要用的是@Validated注解,像代碼中private String lastName;可以使用@Email,雖然使用姓名使用郵件格式可能不太合適,此處只是為了舉例子,意思是lastName必須是郵箱格式
@Component @ConfigurationProperties(prefix = "person") @Validated public class Person { /** * <bean class="Person"> * <property name="lastNme" 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; // @Value("${person.maps}") private Map<String,Object> maps; private List<Object> lists; private Dog dog; public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Boolean getBoss() { return boss; } public void setBoss(Boolean boss) { this.boss = boss; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public Map<String, Object> getMaps() { return maps; } public void setMaps(Map<String, Object> maps) { this.maps = maps; } public List<Object> getLists() { return lists; } public void setLists(List<Object> lists) { this.lists = lists; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public String toString() { return "Person{" + "lastName='" + lastName + '\'' + ", age=" + age + ", boss=" + boss + ", birth=" + birth + ", maps=" + maps + ", lists=" + lists + ", dog=" + dog + '}'; } }
到此這篇關(guān)于SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解的文章就介紹到這了,更多相關(guān)SpringBoot @ConfigurationProperties @Value內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring boot多數(shù)據(jù)源動(dòng)態(tài)切換代碼實(shí)例
這篇文章主要介紹了spring boot多數(shù)據(jù)源動(dòng)態(tài)切換代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01springboot自定義日志注解的實(shí)現(xiàn)
本文主要介紹了springboot自定義日志注解的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03java中throws與try...catch的區(qū)別點(diǎn)
在本篇文章里小編給大家整理了一篇關(guān)于java中throws與try...catch的區(qū)別點(diǎn)的內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。2020-02-02Java JDK動(dòng)態(tài)代理的基本原理詳細(xì)介紹
這篇文章主要介紹了Java JDK動(dòng)態(tài)代理的基本原理詳細(xì)介紹的相關(guān)資料,這里對(duì)動(dòng)態(tài)代理進(jìn)行了詳解并附簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考下2017-01-01IDEA對(duì)使用了第三方依賴(lài)jar包的非Maven項(xiàng)目打jar包的問(wèn)題(圖文詳解)
這篇文章主要介紹了IDEA對(duì)使用了第三方依賴(lài)jar包的非Maven項(xiàng)目打jar包的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Springboot之@ConfigurationProperties注解解讀
在Spring Boot中,@EnableConfigurationProperties注解的主要作用是激活@ConfigurationProperties注解的配置屬性類(lèi),從而讓配置屬性類(lèi)能被Spring容器管理,這樣的話,我們就可以在屬性類(lèi)中輕松地使用@ConfigurationProperties來(lái)綁定配置文件中的屬性2024-10-10Springboot項(xiàng)目對(duì)數(shù)據(jù)庫(kù)用戶(hù)名密碼實(shí)現(xiàn)加密過(guò)程解析
這篇文章主要介紹了Springboot項(xiàng)目對(duì)數(shù)據(jù)庫(kù)用戶(hù)名密碼實(shí)現(xiàn)加密過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06