在非Controller中 使用 @Autowired 或 @Resource注解變量 為null問題,3種解決方法


方法一:

  使用靜態變量 加 @PostConstruct 解決。

@Component //關鍵1
public class ArticlesReceiver {

	@Resource
	private  WechatArticlesTempService wechatArticlesTempService;
	
	public static ArticlesReceiver articlesReceiver; //關鍵2
	
	@PostConstruct //關鍵3
	public void init(){
	    articlesReceiver = this;
	}
        
    	public WechatArticlesTemp getResposeArticlesBoby(String mediaId) {
          WechatArticlesTemp articlesTemp = articlesReceiver.wechatArticlesTempService.getById(mediaId); //關鍵4
          return articlesTemp ;
	}
}    

 

方法二:

  使用靜態變量,加set注入 

@Component //關鍵1
public class ArticlesReceiver {

	private static WechatArticlesTempService wechatArticlesTempService; //關鍵2

	@Autowired  //關鍵3
        public void setWechatArticlesTempService (WechatArticlesTempService wechatArticlesTempService){
              ArticlesReceiver.wechatArticlesTempService = wechatArticlesTempService;
        }
        
    	public WechatArticlesTemp getResposeArticlesBoby(String mediaId) {
          WechatArticlesTemp articlesTemp = wechatArticlesTempService.getById(mediaId); //關鍵4
          return articlesTemp ;
	}
} 

 

方法三:

  代碼注入 , SpringContectHolder類將用到的類的class讀入讓后再調用類中方法

@Component //關鍵1
public class ArticlesReceiver {

	private static WechatArticlesTempService wechatArticlesTempService =  SpringContextHolder.getBean(WechatArticlesTempService.class); //關鍵2

    	public WechatArticlesTemp getResposeArticlesBoby(String mediaId) {
          WechatArticlesTemp articlesTemp = wechatArticlesTempService.getById(mediaId); //關鍵3
          return articlesTemp ;
	}
} 

  

 


免責聲明!

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



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