springboot如何讀取自定義屬性
很多時候,我們開發(fā)當中,需要通過配置自己的屬性信息來滿足不同環(huán)境下的應用部署,因此需要springboot能夠讀取我們自定義的屬性,常用的讀取自定義屬性有@Value和@ConfigurationProperties,下面分別做簡單的介紹
1、@Value
可以看到點擊進去源碼,表明當前注解,可以使用在屬性、方法或者構(gòu)造方法上,支持SPEL表達式和占位符注解方式,此標簽通常是單個配置加載的數(shù)據(jù)
例如在配置文件中,配置了name和age兩個屬性
lixl: person: name: lixl age: 20
我們在代碼中的屬性上,直接注解 /** * @author lixl * @description * @date 2022/2/15 */ @Component public class Person { @Value("${lixl.person.name}") private String name; @Value("${lixl.person.age}") private String age; @Override public String toString() { return "name:"+this.name+";age:"+this.age; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
可以看到,正常打印
修改代碼,將其注解在方法上,運行main方法,依然可以使用
@Value("${lixl.person.name}") public void setName(String name) { this.name = name; }
再次修改代碼,將其注解在構(gòu)造方法的參數(shù)上,依然能夠進行注入
public Person(@Value("${lixl.person.name}")String name, @Value("${lixl.person.age}")String age) { this.name = name; this.age = age; }
另外,如果我們需要給定@Value默認值,也是可以的,例如我們刪除了name字段,同時在@Value中增加默認值
// 默認是通過 : + 默認值 給定 public Person(@Value("${lixl.person.name:張三}")String name, @Value("${lixl.person.age}")String age) { this.name = name; this.age = age; }
運行結(jié)果,也是正常的
我們再來看看Spel表達式
@Value("#{'男'}") // 增加性別字段 private String gender; // 修改toString方法打印性別 public String toString() { return "name:"+this.name+";age:"+this.age+";gender:"+this.gender; }
運行結(jié)果正常通過,還有其他很多Spel表達,此處就不完全列舉了
比如我們在配置文件中指定了屬性name=‘java’ 在需要使用的組件中,設(shè)定@Value("${name}") 注解在相應的字段上,springboot就會自動加載。當然,@Value還可以使用Spel表達是,注入值使用@Value("#{Spel}").
2、@ConfigurationProperties 可以對配置文件中,某一類前綴開頭的屬性整體進行注入,例如:
配置文件中,有如下配置
test.name='lixl' test.age='age'
配置類需要按照一下方式編寫
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component // 首先本身要是springboot容器中的組件 @ConfigurationProperties(prefix = "test") // 指定前綴 public class ConfigTest { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
目前都是用到的springboot默認的配置文件,我們也可以自己指定配置文件
使用@PropertySource(“classpath:xxx.properties”),進行加載配置文件
以上就是springboot如何讀取自定義屬性的詳細內(nèi)容,更多關(guān)于springboot讀取自定義屬性的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springMVC使用ajaxFailUpload上傳圖片的方法
這篇文章主要介紹了springMVC使用ajaxFailUpload上傳圖片的相關(guān)知識,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06springboot登錄攔截器+ThreadLocal實現(xiàn)用戶信息存儲的實例代碼
ThreadLocal 為變量在每個線程中創(chuàng)建了一個副本,這樣每個線程都可以訪問自己內(nèi)部的副本變量,這篇文章主要介紹了springboot登錄攔截器+ThreadLocal實現(xiàn)用戶信息存儲的實例代碼,需要的朋友可以參考下2024-03-03Springboot2.6.x高版本與Swagger2版本沖突問題解決方法
Spring Boot 2.6.x版本引入依賴?springfox-boot-starter?(Swagger?3.0) 后,啟動容器會報錯,本文就介紹一下Springboot2.6.x高版本與Swagger2版本沖突問題解決方法,感興趣的可以了解一下2022-04-04Springboot獲取前端反饋信息并存入數(shù)據(jù)庫的實現(xiàn)代碼
這篇文章主要介紹了Springboot獲取前端反饋信息并存入數(shù)據(jù)庫的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03如何巧用HashMap一行代碼統(tǒng)計單詞出現(xiàn)次數(shù)詳解
這篇文章主要給大家介紹了關(guān)于如何巧用HashMap一行代碼統(tǒng)計單詞出現(xiàn)次數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-07-07SpringBoot+docker環(huán)境變量配置詳解
這篇文章主要介紹了SpringBoot+docker環(huán)境變量配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10SpringBoot 項目添加 MDC 日志鏈路追蹤的執(zhí)行流程
日志鏈路追蹤就是將一個標志跨線程進行傳遞,在一般的小項目中也就是在你新起一個線程的時候,或者使用線程池執(zhí)行任務的時候會用到,比如追蹤一個用戶請求的完整執(zhí)行流程,本文給大家介紹SpringBoot MDC 日志鏈路追蹤的代碼,感興趣的朋友一起看看吧2021-06-06