我怎样才能进入弹簧容器?

时间:2010-04-16 19:52:29

标签: spring

我有一个Spring容器正在运行,我有一个类,我希望能够访问spring容器中创建的bean。我所拥有的课程没有在弹簧容器中注册。

我可以做的一件事是我可以使用MethodInvoker来调用静态方法,所以我总是可以访问我的类中的静态字段(这将是一个来自spring容器的bean)。

对于非Web应用程序,我们是否有像WebapplicationContextUtils这样的类?

2 个答案:

答案 0 :(得分:2)

您可以实施ApplicationContextAware

答案 1 :(得分: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
    }
  }
}