2013-02-22 117 views
0

是否有可能像這樣的靜態方法中注入的依賴:在靜態方法注入依賴

@Component 
public class MyClass { 
    @Autowired 
    public static void main(String[] args) { 
     // do stuff 
    } 
} 

我所試圖實現的是實現此工作代碼自動裝配:

@Component 
public class MyClass { 

    public static void main(String[] args, MyClass mc) { 
     ApplicationContext ctx = new GenericXmlApplicationContext("context.xml"); 
     MyClass p = ctx.getBean(MyClass.class); 
     // do stuff 
    } 
} 
+0

我覺得這是不可能的。由於主要方法是您的代碼的入口點。我相信它是執行的第一行代碼。雖然你的Spring上下文沒有初始化,但你不能使用spring註解。 – 2013-02-22 01:13:04

+0

我試過這樣做,因爲我在使用maven打包應用程序時遇到問題,它無法加載context.xml,而當我從eclipse運行它時,它的工作原理 – xybrek 2013-02-22 05:51:55

+0

爲什麼?您的代碼不會影響軟件包。 – 2013-02-22 08:27:35

回答

1

首先,我敢肯定包含public static void main(String[] args, MyClass mc) {的第二個代碼塊不能作爲啓動應用程序的主要方法。

您將無法以這種方式使用自動裝配。記住靜態主要方法是進入你的應用程序,把它看作與你的類不同。當輸入這個方法時,沒有任何對象會被實例化,包括處理自動裝配的Spring Context。

+0

我嘗試這樣做是因爲我在使用maven打包應用程序時遇到問題,它無法加載context.xml,而當我從eclipse運行它時,它的工作原理 – xybrek 2013-02-22 05:52:20

+0

您的上下文不在jar中。對於所問的人來說,這是一個不同的問題。 – GuessBurger 2013-03-17 13:52:58