SpringBoot注入靜態(tài)屬性或靜態(tài)對象的方法
SpringBoot注入靜態(tài)屬性或靜態(tài)對象
前言
我們在使用SpringBoot為一些靜態(tài)屬性或者靜態(tài)對象注入時會發(fā)現(xiàn)注入不成功。
我們可以以下這幾種方式把需要注入的值注入到靜態(tài)屬性中。
setter方式注入
代碼如下(示例):@Value與@Autowired都可以使用
@SpringBootTest(classes = Application.class)
public class TestApplication {
private static DaoUtil daoUtil;
private static String ACTIVE;
// 這里其實我們只需要一個setter方法
// 即可把springboot中的配置文件中的屬性注入到靜態(tài)屬性中
@Value("${spring.profiles.active}")
public void setACTIVE( String ACTIVE) {
TestApplication.ACTIVE = ACTIVE;
}
@Autowired
public void setDaoUtil(DaoUtil daoUtil) {
TestApplication.daoUtil = daoUtil;
}
@Test
void contextLoads() {
System.out.println(getActive());
System.out.println(daoUtil);
}
public static String getActive(){
return ACTIVE;
}
}@PostConstruct init方式注入
@Autowired
DaoUtil daoUtilProxy;
@Value("${spring.profiles.active}")
String activeProxy;
private static DaoUtil daoUtil;
private static String ACTIVE;
@PostConstruct
private void init() {
daoUtil = daoUtilProxy;
ACTIVE = activeProxy;
}注意
兩種方式都能成功注入對象或?qū)傩浴?注入成功的前提是屬性或?qū)ο笏诘念愂荢pringBoot容器的組件(Bean)。
// 用ide工具生成靜態(tài)對象setter方法時會自動的把static的修飾詞帶上
// 這樣也會讓注入不成功(作者的慘痛經(jīng)歷??????)
// 這里我們需要把static去掉即可
public static void setACTIVE(String ACTIVE) {
TestApplication.ACTIVE = ACTIVE;
}總結(jié)
我們需要可以在組件類中使用@Value或@Autowired注入靜態(tài)屬性,才能注入成功。否則不成效;
到此這篇關(guān)于SpringBoot注入靜態(tài)屬性或靜態(tài)對象的文章就介紹到這了,更多相關(guān)SpringBoot注入靜態(tài)屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中的ClassPathXmlApplicationContext源碼詳解
這篇文章主要介紹了Spring中的ClassPathXmlApplicationContext源碼詳解,ApplicationContext的主要實現(xiàn)類是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默認(rèn)從類路徑加載配置文件,后者默認(rèn)從文件系統(tǒng)中裝載配置文件,需要的朋友可以參考下2023-12-12
關(guān)于Feign的覆寫默認(rèn)配置和Feign的日志
這篇文章主要介紹了關(guān)于Feign的覆寫默認(rèn)配置和Feign的日志方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
詳細(xì)介紹使用Java調(diào)用Python的四種方法
這篇文章主要給大家介紹了關(guān)于使用Java調(diào)用Python的四種方法,每種方法根據(jù)實際項目需求有其適用場景,其中,推薦使用Runtime.getRuntime()方法,因為它更為簡潔且易于實現(xiàn),需要的朋友可以參考下2024-10-10
springboot restTemplate連接池整合方式
這篇文章主要介紹了springboot restTemplate連接池整合方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

