springboot如何靜態(tài)加載@configurationProperties
平時(shí)開發(fā),基本不改變的常量我們都放在了配置項(xiàng)里,如properties或yml文件里,這個(gè)時(shí)候?yàn)榱酥辉趩?dòng)時(shí)候進(jìn)行加載。如何做呢?
我們通過springboot的 @ConfigurationProperties 注解和static靜態(tài)化對應(yīng)屬性進(jìn)行。
但如果操作不當(dāng),會導(dǎo)致加載的數(shù)據(jù)為空,至于為什么,看下面的案例。
1、錯(cuò)誤案例
//錯(cuò)誤1:get\set都是靜態(tài)方法 @Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; public static Integer getPreview() { return preview; } public static void setPreview(Integer preview) { MobileConfig.preview = preview; } }
//錯(cuò)誤2:跟第一種差不多,只是用了lombok注解代替了get\set方法,get\set也都是靜態(tài)方法 @Data @Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; }
2、成功案例
@Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; public static Integer getPreview() { return preview; } public void setPreview(Integer preview) { MobileConfig.preview = preview; } }
@Data @Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; public void setPreview(Integer preview) { MobileConfig.preview = preview; } }
3、原因
spring在注入的時(shí)候,需要調(diào)用set 方法,如果這個(gè)方法是靜態(tài)方法,就沒法動(dòng)態(tài)注入了,所以只需要把get方法加入static作為靜態(tài)方法即可,如果用了@Data,只需要重寫set方法即可。
到此這篇關(guān)于springboot如何靜態(tài)加載@configurationProperties的文章就介紹到這了,更多相關(guān)springboot靜態(tài)加載@configurationProperties內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot中@Value獲取值和@ConfigurationProperties獲取值用法及比較
- springboot中@ConfigurationProperties無效果的解決方法
- SpringBoot中的@ConfigurationProperties注解解析
- SpringBoot中@ConfigurationProperties注解的使用與源碼詳解
- 關(guān)于SpringBoot的@ConfigurationProperties注解和松散綁定、數(shù)據(jù)校驗(yàn)
- SpringBoot?@Value與@ConfigurationProperties二者有哪些區(qū)別
- SpringBoot2底層注解@ConfigurationProperties配置綁定
- Springboot中@ConfigurationProperties輕松管理應(yīng)用程序的配置信息詳解
相關(guān)文章
Java中回調(diào)函數(shù)?(callback)?及其實(shí)際應(yīng)用場景
在Java中回調(diào)函數(shù)(Callback)是一種常見的設(shè)計(jì)模式,用于實(shí)現(xiàn)異步操作或事件處理,這篇文章主要給大家介紹了關(guān)于Java中回調(diào)函數(shù)?(callback)?及其實(shí)際應(yīng)用場景的相關(guān)資料,需要的朋友可以參考下2024-02-02一次mybatis連接查詢遇到的坑實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于一次mybatis連接查詢遇到的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12java面試題之try中含return語句時(shí)代碼的執(zhí)行順序詳解
這篇文章主要介紹了關(guān)于java中的一道面試題,這套題就是在try中含return語句時(shí)代碼的執(zhí)行順序,這個(gè)問題看似簡單,卻暗藏殺機(jī)??!文中通過一個(gè)個(gè)例子詳細(xì)介紹了其中玄機(jī),需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2017-04-04springboot項(xiàng)目編譯提示無效的源發(fā)行版17解決辦法
這篇文章主要給大家介紹了關(guān)于springboot項(xiàng)目編譯提示無效的源發(fā)行版17解決辦法,這個(gè)錯(cuò)誤意味著你的Spring Boot項(xiàng)目正在使用Java 17這個(gè)版本,但是你的項(xiàng)目中未配置正確的Java版本,需要的朋友可以參考下2023-06-06