關(guān)于@Component注解下的類無法@Autowired問題
@Component注解下類無法@Autowired
這個問題心累
在把我的一個非Web程序遷移從Spring遷移到SpringBoot時,出現(xiàn)了在@Component注解下@Autowired的類為null的情況,也就是沒注入成功,或者說是此類在bean加載之前就被調(diào)用了。
試了各種辦法,修改掃描包,修改@Component注解等等,皆未成功,后來看到了一個方法,探究了一下。
@Component public class ComponentClass { ? ? @Autowired ? ? private JedisClient jedisClient; ? ? public static ComponentClass componentClass; ? ? @PostConstruct ? ? public void init(){ ? ? ? ? componentClass = this; ? ? ? ? componentClass.jedisClient = this.jedisClient; ? ? } }
- 聲明一個此類的靜態(tài)變量,用以保存bean。
- 使用@PostConstruct注解,將需要注入的類添加到靜態(tài)變量中。
- 接下來,使用這個靜態(tài)變量來調(diào)用注入類就行了。
@PostConstruct這個注解的具體作用就是:
注解在方法上,表示此方法是在Spring實例化該bean之后馬上執(zhí)行此方法,之后才會去實例化其他bean。
這樣在Spring實例化ComponentClass之后,馬上執(zhí)行此方法,初始化ComponentClass靜態(tài)對象和成員變量jedisClient。
@Component注解下@Autowired報錯
這是由于 Springboot Bean 的加載機制所導(dǎo)致的,具體大家可以去研究源碼。
下面是我的解決方案
僅供參考
@Component public class XxxConfig { // 1 public static XxxConfig xxxConfig ; @Resource private RedisUtil redisUtil; // 2 @PostConstruct public void init() { xxxConfig = this; xxxConfig.redisUtil = this.redisUtil; } public boolean test() { // 3.使用 jwtConfig.redisUtil 形式調(diào)用 return xxxConfig.redisUtil.set("abcd", "123456", 3600); } }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
jvm垃圾回收GC調(diào)優(yōu)基礎(chǔ)原理分析
談到調(diào)優(yōu),這一定是針對特定場景、特定目的的事情, 對于 GC 調(diào)優(yōu)來說,首先就需要清楚調(diào)優(yōu)的目標是什么?從性能的角度看,通常關(guān)注三個方面,內(nèi)存占用(footprint)、延時(latency)和吞吐量(throughput)2022-01-01IDEA:Git stash 暫存分支修改的實現(xiàn)代碼
這篇文章主要介紹了IDEA:Git stash 暫存分支修改的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03SpringMVC中Invalid bound statement (not f
本文主要介紹了SpringMVC中Invalid bound statement (not found)常見報錯問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Java 實戰(zhàn)項目錘煉之IT設(shè)備固定資產(chǎn)管理系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java+SSM+jsp+mysql+maven實現(xiàn)一個IT設(shè)備固定資產(chǎn)管理系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11Java中計算集合中元素的出現(xiàn)次數(shù)統(tǒng)計
本文主要介紹了Java中計算集合中元素的出現(xiàn)次數(shù)統(tǒng)計,使用Collections類配合HashMap來統(tǒng)計和java lamb 計算這兩種方式,具有一定的參考價值,感興趣可以了解一下2024-02-02Spring中的@ConditionalOnProperty作用和用法詳解
這篇文章主要介紹了Spring中的@ConditionalOnProperty作用和用法詳解,在spring boot中有時候需要控制配置類是否生效,可以使用@ConditionalOnProperty注解來控制@Configuration是否生效,需要的朋友可以參考下2023-11-11分享Spring?Cloud?OpenFeign?的五個優(yōu)化技巧
這篇文章主要分享的是Spring?Cloud?OpenFeign?的五個優(yōu)化技巧,OpenFeign?是?Spring?官方推出的一種聲明式服務(wù)調(diào)用和負載均衡組件,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-05-05Springboot實現(xiàn)多服務(wù)器session共享
這篇文章主要為大家詳細介紹了Springboot實現(xiàn)多服務(wù)器session共享,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05