springboot如何靜態(tài)加載@configurationProperties
平時(shí)開(kāi)發(fā),基本不改變的常量我們都放在了配置項(xiàng)里,如properties或yml文件里,這個(gè)時(shí)候?yàn)榱酥辉趩?dòng)時(shí)候進(jìn)行加載。如何做呢?
我們通過(guò)springboot的 @ConfigurationProperties 注解和static靜態(tài)化對(duì)應(yīng)屬性進(jìn)行。
但如果操作不當(dāng),會(huì)導(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)方法,就沒(mé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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot中@Value獲取值和@ConfigurationProperties獲取值用法及比較
- springboot中@ConfigurationProperties無(wú)效果的解決方法
- SpringBoot中的@ConfigurationProperties注解解析
- SpringBoot中@ConfigurationProperties注解的使用與源碼詳解
- 關(guān)于SpringBoot的@ConfigurationProperties注解和松散綁定、數(shù)據(jù)校驗(yàn)
- SpringBoot?@Value與@ConfigurationProperties二者有哪些區(qū)別
- SpringBoot2底層注解@ConfigurationProperties配置綁定
- Springboot中@ConfigurationProperties輕松管理應(yīng)用程序的配置信息詳解
相關(guān)文章
快速解決跨域請(qǐng)求問(wèn)題:jsonp和CORS
這篇文章主要介紹了快速解決跨域請(qǐng)求問(wèn)題:jsonp和CORS,涉及jsonp和CORS的介紹,分享了前端 jQuery 寫法,后端 SpringMVC 配置,后端非 SpringMVC 配置等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11
Java函數(shù)式編程(一):你好,Lambda表達(dá)式
這篇文章主要介紹了Java函數(shù)式編程(一):你好,Lambda表達(dá)式,本文講解了新老函數(shù)式編程的一些變化,需要的朋友可以參考下2014-09-09
IDEA啟動(dòng)Tomcat報(bào)Unrecognized option: --add-opens=java
這篇文章主要為大家介紹了解決IDEA啟動(dòng)Tomcat報(bào)Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED的方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊(cè)增刪改查功能的示例代碼
這篇文章主要介紹了Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊(cè)增刪改查功能的示例代碼,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
SpringCloud Netflix Ribbon源碼解析(推薦)
這篇文章主要介紹了SpringCloud Netflix Ribbon源碼解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
MyBatis-Plus 插件擴(kuò)展的實(shí)現(xiàn)
MyBatis-Plus通過(guò)插件擴(kuò)展機(jī)制增強(qiáng)功能,基于MyBatis Interceptor攔截器,包括分頁(yè)插件、邏輯刪除、SQL性能分析和樂(lè)觀鎖等,開(kāi)發(fā)者可自定義插件以適應(yīng)特定需求,有效地增強(qiáng)SQL執(zhí)行過(guò)程的控制和優(yōu)化,同時(shí)注意插件使用的性能影響和執(zhí)行順序2024-09-09
WebFlux 服務(wù)編排使用優(yōu)勢(shì)詳解
這篇文章主要為大家介紹了WebFlux 服務(wù)編排使用優(yōu)勢(shì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05

