Lookup方法注入,Provider<T>
,ObjectFactory
和factoryBean
之间有什么区别。如果我想要一个新的原型实例(很多次)成一个单独的,哪个是最好的解决方案?
如果我想将原型bean的一个新实例(很多次)变成原型?
答案 0 :(得分:0)
请检查我的问题:How to instantiate spring managed beans at runtime?
据我所知,factoryBean只是一种用一些复杂的实例化逻辑创建bean的方法。在xml中很难定义这样的逻辑。在春季文档中对此进行了详细解释:http://springindepth.com/book/in-depth-ioc-factory-bean.html
其他三个看起来与我相似。但是如果你看一个春天问题https://jira.spring.io/browse/SPR-5192,你会发现javax.inject.Provider接口来自JSR-330,我猜它是在春天实现的,而不是查找方法注入,看起来它是更好的解决方案。 (同样的事情在Google Guice DI中实现)
对于Object factory,你必须编写与spring代码一起编写(ObjectFactory需要弹簧导入):
@Autowired
private ObjectFactory<PrototypeBean> beanFactory;
//...
beanFactory.getObject()
<强> UPD 强> 查找,beanFactory和Provider不支持传递任何参数,即你有Provider#get()但没有Provider#get(Object ... args)