Spring:Lookup方法注入,Provider <t>,ObjectFactory和factoryBean </t>之间的区别

时间:2014-12-04 15:03:58

标签: spring spring-mvc

Lookup方法注入,Provider<T>ObjectFactoryfactoryBean之间有什么区别。如果我想要一个新的原型实例(很多次)成一个单独的,哪个是最好的解决方案? 如果我想将原型bean的一个新实例(很多次)变成原型?

1 个答案:

答案 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)