Spring注入service為null另類解決辦法 工具類 一般類 靜態 非controller


      系統為SpringMVC框架,在開發的過程中有一些工具類需要調用下由spring管理的service層。但是一進注入不進來,報null異常;

      在嘗試了網上的一系列方法后,還是沒有解決。網上的解決方法主要有以下幾種:

        1、將工具類申明為spring組件,如@controller @compent 等,在spring自動掃描包設置中將工具類所在的包加進來;  無效  

        2、new一個service;  無效 而且不符合spring管理;

      山窮水盡后,找到了一個另類的解決辦法,代碼原理還不太清楚,只是大概猜測下,有錯誤的地方,大家留言指正:

 

  1. @Component     //申明為spring組件
  2. public class TestUtils {  
  3.     @Autowired    
  4.     private TestService testService;  //添加所需service的私有成員
  5.     private static TestUtils  testUtils ;  //  關鍵點1   靜態初使化 一個工具類  這樣是為了在spring初使化之前
  6.   
  7.     public void setTestService(TestService  testService) {  
  8.         this.testService = testService;  
  9.     }  
  10.       
  11.     @PostConstruct     //關鍵二   通過@PostConstruct 和 @PreDestroy 方法 實現初始化和銷毀bean之前進行的操作
  12.     public void init() {  
  13.         testUtils = this;  
  14.         testUtils.testService = this.testService;   // 初使化時將已靜態化的testService實例化
  15.     }  

                這樣下面的代碼中就可以通過 testUtils.testService 來調用service處理


免責聲明!

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



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