2010-04-16 58 views
2

我有一個彈簧容器正在運行,並且我有一個類可以訪問在spring容器中創建的bean。我擁有的課程沒有在彈簧容器中註冊。我怎樣才能訪問彈簧容器?

有一件事我可以做的是,我可以使用MethodInvoker調用一個靜態方法,所以我將有機會獲得靜態字段(這將是從春天容器中的bean)在我的課總是如此。

我們是否喜歡WebapplicationContextUtils類的應用程序,是不是網站的?

回答

2

您可以實現ApplicationContextAware

+0

+1,但請提供鏈接到庫的新版本。 – Bozho 2010-04-16 20:47:55

+0

對不起。我沒有注意到這是舊版本。這裏是最新的:http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/ApplicationContextAware.html – 2010-04-16 21:18:05

+0

我不能這樣做。因爲我所說的bean沒有在Spring容器中註冊。 我期待着使用一個工廠類,它會給我一些靜態方法來訪問spring容器。 – Antony 2010-04-18 15:26:13

0

你爲什麼不提供在Spring管理的bean靜態getInstance()方法,它允許Spring IoC容器之外的對象進行搶對象的實例? 你的Spring管理對象最有可能是單身人士,所以這應該很好地工作。

例如:

public class MyObj { 

    private static instance = null; 

    public MyObj() { 
    instance = this; 
    } 

    public static MyObj getInstance() { 
    return instance; 
    } 

} 

public class OutsideSpringObj { 

    public doSomething() { 
    MyObj springManagedObj = MyObj.getInstance(); 
    if (springManagedObj != null) { 
     // do something with spring-managed object 
    } 
    } 
}