Spring中注入static靜態成員變數會導致空指標異常問題及解決方案
阿新 • • 發佈:2018-12-27
首先,,按照常規的注入,,我們會直接在需要注入的物件上加註解@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第二種:使用@PostConstructy註解6 public void setLogDao( A a){ 7 DemoUtil.a = a; 8 } 9 }
@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//初始化了,,不會為空