1. 程式人生 > >【JavaWeb】Spring無法@Autowired注入

【JavaWeb】Spring無法@Autowired注入

在用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就可以正常注入了。