Spring Boot@Component注解下的類無法@Autowired的問題



title: Spring Boot@Component注解下的類無法@Autowired的問題
date: 2019-06-26 08:30:03
categories:

  • Spring Boot
    tags:
  • 注入問題

這個問題心累

在把我的一個非Web程序遷移從Spring遷移到SpringBoot時,出現了在@Component注解下@Autowired的類為null的情況,也就是沒注入成功,或者說是此類在bean加載之前就被調用了。

試了各種辦法,修改掃描包,修改@Component注解等等,皆未成功,后來看到了一個方法,探究了一下。

@Component
public class ComponentClass {
<span class="token annotation punctuation">@Autowired</span>
<span class="token keyword">private</span> JedisClient jedisClient<span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> ComponentClass componentClass<span class="token punctuation">;</span>
<span class="token annotation punctuation">@PostConstruct</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
    componentClass <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">;</span>
    componentClass<span class="token punctuation">.</span>jedisClient <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>jedisClient<span class="token punctuation">;</span>
<span class="token punctuation">}</span>

}

  • 聲明一個此類的靜態變量,用以保存bean。
  • 使用@PostConstruct注解,將需要注入的類添加到靜態變量中。
  • 接下來,使用這個靜態變量來調用注入類就行了。

@PostConstruct這個注解的具體作用就是:

注解在方法上,表示此方法是在Spring實例化該bean之后馬上執行此方法,之后才會去實例化其他bean

這樣在Spring實例化ComponentClass之后,馬上執行此方法,初始化ComponentClass靜態對象和成員變量jedisClient

原文地址:https://blog.csdn.net/weixin_38950807/article/details/93709887


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM