Spring中注入static靜態成員變量會導致空指針異常問題及解決方案

首先,,按照常規的注入,,我們會直接在需要注入的對象上加註解@Autowired,,,運行服務的的時候,,,就會出現呢空指針異常java.lang.NullPointerException,,異常的原因是 靜態變量/類變量不是對象的屬性,而是一個類的屬性,spring則是基於對象層面上的依賴注入.
 @Autowired
private  static PayLogDao logDao ;   // 異常
解決方案
  第一種:使用set函數注入
1 @Component
2 public class DemoUtil {
3 
4     private  static  A a;
5     @Autowired
6     public void setLogDao( A a){
7         DemoUtil.a = a;
8     }
9 }
  第二種:使用@PostConstructy註解
 @Component
 2 public class DemoUtil {
 3     @Autowired
 4     private  A a;
 5 
 6     private static  DemoUtil  demoUtil ;
 7 //初始化對象 
 8     @PostConstruct
 9     private void init() {
10         demoUtil = this;
     demoUtil .a=this.a//初始化了,,不會爲空
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章