2010-04-16 48 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 
    } 
    } 
}