Springboot如何通過(guò)yml配置文件為靜態(tài)成員變量賦值
通過(guò)yml配置文件為靜態(tài)成員變量賦值
我們對(duì)springboot為普通成員變量的方式很熟悉,所以經(jīng)常定式思維的認(rèn)為靜態(tài)屬性的賦值和普通屬性一樣,結(jié)果調(diào)試的時(shí)候調(diào)試半天發(fā)現(xiàn)靜態(tài)屬性還是Null。
仔細(xì)一想才發(fā)現(xiàn)靜態(tài)屬性和普通屬性的賦值方式不太一樣。
到底是哪里不一樣呢?問(wèn)題出在set方法。我們通過(guò)idea快捷鍵或注解 @Data 得到的set方法是靜態(tài)方法。
這里我強(qiáng)調(diào)一句
- 用idea快捷鍵或注解 @Data 得到的set方法是靜態(tài)方法
- 用idea快捷鍵或注解 @Data 得到的set方法是靜態(tài)方法
- 用idea快捷鍵或注解 @Data 得到的set方法是靜態(tài)方法

而springboot為屬性賦值時(shí)采用的是動(dòng)態(tài)的setter注入,所以我們按照為普通屬性賦值的方法給靜態(tài)變量賦值必然是行不通的。
所以我們只需要將圖里面的 static 給刪掉就大功告成了??!
順便再提一句,在這個(gè)類上面需要加上 @ConfigurationProperties(prefix = "reggie.qiniu") 注解,并且在調(diào)用的地方加上 @EnableConfigurationProperties(QiniuUtils.class) 注解,括號(hào)里面的參數(shù)不可以跟我一樣哦,如果多處都需要調(diào)用的話,你嫌麻煩可以直接在springboot啟動(dòng)類上加上這個(gè)注解。
怕有的同學(xué)還是看不懂,我再貼一下我yml配置文件里面配置的寫法。

Springboot靜態(tài)變量讀取yml配置信息
因?yàn)閟pring加載靜態(tài)方法比IOC早,所以不能直接使用@Value注解讀取yml配置,讀取結(jié)果往往是null。

解決方式1
我們可以通過(guò)@PostConstruct在服務(wù)加載Servlet的時(shí)候運(yùn)行
@Configuration
public class DemoConfig {
//給靜態(tài)變量賦值
@Value("${mvc.test}")
public int test;
public void setTest(int test) {
this.test = test;
}
public static int TEST;
@PostConstruct
public void init(){
DemoConfig.TEST = test;
}
}然后在我們需要的地方調(diào)用就行了
@Component
public class MyConfig {
public void show(){
System.out.println(DemoConfig.TEST);
}
}解決方式2
我們可以通過(guò)@AutoConfigureAfter 來(lái)在當(dāng)前類注入到容器之前去加載相關(guān)配置類
@Configuration
public class DemoConfig {
public static int test;
//給靜態(tài)變量賦值
@Value("${mvc.test}")
public void setTest(int test) {
DemoConfig.test = test;
}
}@AutoConfigureAfter({DemoConfig.class}) //加載當(dāng)前文件之前先去加載DemoConfig文件
@Component
public class MyConfig {
public void show(){
//然后在我們需要的地方調(diào)用就行了
System.out.println(DemoConfig.test);
}
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis實(shí)現(xiàn)自動(dòng)生成增刪改查代碼
這篇文章主要為大家詳細(xì)介紹了Mybatis如何實(shí)現(xiàn)自動(dòng)生成增刪改查代碼的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-01-01
IDEA中配置Python環(huán)境并運(yùn)行方式
本文介紹了在Mac和Windows平臺(tái)上安裝Python環(huán)境的方法,并詳細(xì)講解了如何在IntelliJ IDEA中安裝Python插件、創(chuàng)建Python工程和運(yùn)行Python文件,同時(shí),還提到了一些常用的Python框架,如Django、Google App Engine和SQL支持2025-03-03
Spring主配置文件(applicationContext.xml) 導(dǎo)入約束詳解
在本篇文章里我們給各位整理的是關(guān)于Spring主配置文件(applicationContext.xml) 導(dǎo)入約束的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要參考下。2019-08-08
idea創(chuàng)建的idea項(xiàng)目時(shí)springframework出現(xiàn)紅色的原因和解決方法
當(dāng)使用 IntelliJ IDEA 創(chuàng)建 Spring Framework 項(xiàng)目時(shí),springframework 出現(xiàn)紅色可能是因?yàn)橄嚓P(guān)的 Spring Framework 依賴沒(méi)有正確加載或項(xiàng)目的配置有問(wèn)題,本文給大家介紹了一些常見(jiàn)的原因和解決方法,需要的朋友可以參考下2023-09-09
Springmvc項(xiàng)目web.xml中servlet-mapping路徑映射配置注意說(shuō)明
這篇文章主要介紹了Springmvc項(xiàng)目web.xml中servlet-mapping路徑映射配置注意說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

