1. 程式人生 > >Spring中注入static靜態成員變數會導致空指標異常問題及解決方案

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//初始化了,,不會為空