实例化spring bean对象

时间:2011-11-16 21:15:39

标签: java spring

我一直在玩Spring并且有一个简单的问题......

我在class A中有一个循环,用于实例化class B的新对象。为此,我使用了new运算符,但是当我得到空指针异常时,我无法引用注入class B实例的任何Spring bean。我想我明白这可能是因为Spring没有将这些实例作为bean来管理,因此无法管理生命周期,但我只是想知道创建多个实例的最佳方法是什么,即我应该使用{{1 }

1 个答案:

答案 0 :(得分:2)

首先 - 对你的假设是正确的。使用new表示spring不管理对象。

解决方案可以是:

  • appContext.getBean("beanA"),其中bean的范围是“prototype”。您可以通过注入appContext或实施ApplicationContextAware
  • 来获取@Configurable
  • 使用new和apsectJ编织。这样,即使用{{1}}实例化的对象也会被spring管理(weaver插入编译器或vm)
  • 使用lookup-method - 它与第一个选项相同(同样需要原型范围的bean),但是每次调用时都会得到一个类的方法返回一个新实例。

但是,通常情况下,你不应该那样做。在极少数情况下,我会推荐第3种选择。