【JavaWeb】Spring無法@Autowired注入
阿新 • • 發佈:2019-01-29
在用Spring依賴注入時發現@Autowired無法注入,程式碼如下:
@Autowired
private static MyBean1 bean1 ;
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("Beans.xml");
bean1.method1();
}
類MyBean1:
@Component
public class MyBean1 {
public void method1() {
System.out.println("bean 1");
}
}
執行報錯:
Exception in thread "main"
java.lang.NullPointerExceptionat test2.Main.main(Main.java:12)
bean1併為注入進來
原因:因為用的是普通Java程式,類的初始化順序為先靜變數,然後靜態方法,然後非靜態變數,然後非靜態方法。
因為是先初始化的靜態bean1,此時並未載入Beans.xml配置檔案,所以無法掃描到包下的@Component元件註解,也就沒有註冊bean給spring,所以無法依賴注入。
改為在web專案中即可,因為web專案在初始化載入的時候首先載入配置檔案這樣bean就可以正常注入了。