我一直在玩Spring并且有一个简单的问题......
我在class A
中有一个循环,用于实例化class B
的新对象。为此,我使用了new
运算符,但是当我得到空指针异常时,我无法引用注入class B
实例的任何Spring bean。我想我明白这可能是因为Spring没有将这些实例作为bean来管理,因此无法管理生命周期,但我只是想知道创建多个实例的最佳方法是什么,即我应该使用{{1 }
答案 0 :(得分:2)
首先 - 对你的假设是正确的。使用new
表示spring不管理对象。
解决方案可以是:
appContext.getBean("beanA")
,其中bean的范围是“prototype”。您可以通过注入appContext
或实施ApplicationContextAware
@Configurable
new
和apsectJ编织。这样,即使用{{1}}实例化的对象也会被spring管理(weaver插入编译器或vm)lookup-method
- 它与第一个选项相同(同样需要原型范围的bean),但是每次调用时都会得到一个类的方法返回一个新实例。但是,通常情况下,你不应该那样做。在极少数情况下,我会推荐第3种选择。