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)文章
解決Java中的java.io.IOException: Broken pipe問題
這篇文章主要介紹了解決Java中 java.io.IOException: Broken pipe的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
JavaWeb使用Cookie模擬實現(xiàn)自動登錄功能(不需用戶名和密碼)
不需要填寫用戶名和密碼自動登錄系統(tǒng),其實現(xiàn)思路使用cookie模擬瀏覽器自動登錄,對cookie實現(xiàn)自動登錄功能感興趣的朋友一起學習吧2016-08-08
SpringBoot淺析安全管理之基于數(shù)據(jù)庫認證
在真實的項目中,用戶的基本信息以及角色等都存儲在數(shù)據(jù)庫中,因此需要從數(shù)據(jù)庫中獲取數(shù)據(jù)進行認證和授權(quán)2022-08-08
基于SpringBoot實現(xiàn)Web應用的登錄與退出功能
登錄與退出功能作為 Web 應用中的基礎(chǔ)且重要的組成部分,直接關(guān)系到用戶的安全和隱私保護,所以本文給大家介紹了基于SpringBoot實現(xiàn)Web應用的登錄與退出功能,文中有詳細的代碼供大家參考,需要的朋友可以參考下2024-04-04

