關於工具類中@Autowired注入為NULL的問題記錄


 記錄:在實體類中加入@Component注解和@Autowired注解時Service不能注入成功。
@Component //把普通pojo實例化到spring容器中  ①
public class MyUtil {
    // 這里是需要注入的Service ②
    @Autowired
    private MyService myService;
    private static MyUtil myUtil;

    //初始化 ③
    @PostConstruct
    public void init() {
        myUtil = this;
    }

    //調用 ④
    public static void insertParam() {
        // 調用方法 ⑤
        myUtil.myService.testInsert();
    }
}

注釋:①將普通pojo實例化到容器中、如果無注解myUtil為null
           ②spring自動注入,如果在靜態方法中調用此注入類的方法,發現注入為'null';這里不是因為spring未注入,而是被static方法給'清空'了,在無法先於static方法初始化時可以使用@PostConstruct進行初始化。
   (注:@PostConstruct修飾的方法會在服務器加載Servle的時候運行,並且只會被服務器執行一次。PostConstruct在構造函數之后執行,init()方法之前執行。)

           ③使用@PostConstruct注解的方法public void init()先給該類賦值,然后通過@Autowired注入進來。這樣不會影響dao等service下面調用的注入。
   ④ static方法使用類名直接調用
   ⑤調用方法 myService現在是作為myUtil的屬性

 

參考


免責聲明!

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



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