【问题标题】:Spring: difference between Lookup method injection, Provider<T> , ObjectFactory and factoryBeanSpring:查找方法注入、Provider<T>、ObjectFactory 和 factoryBean 之间的区别
【发布时间】:2014-12-04 15:03:58
【问题描述】:

查找方法注入Provider&lt;T&gt;ObjectFactoryfactoryBean有什么区别。如果我想要一个原型的新实例(很多次)到一个单例中,它们中的哪一个是最好的解决方案? 如果我想将一个原型 bean 的新实例(多次)变成一个原型?

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    也请检查我的问题:How to instantiate spring managed beans at runtime?

    据我了解, factoryBean 只是一种创建具有一些复杂实例化逻辑的 bean 的方法。在 xml 中很难定义这样的逻辑。在 spring 文档中有很好的解释:http://springindepth.com/book/in-depth-ioc-factory-bean.html

    其他三个对我来说看起来很相似。但是,如果您查看一个 spring 问题https://jira.spring.io/browse/SPR-5192,您会发现 javax.inject.Provider 接口来自 JSR-330,我猜它是在 Spring 中实现的,比查找方法注入晚,看起来它是更好的解决方案。 (同样的事情在 Google Guice DI 中实现)

    同样使用对象工厂,你必须结合spring代码编写(ObjectFactory需要spring导入):

    @Autowired
    private ObjectFactory<PrototypeBean> beanFactory;
    //...
    beanFactory.getObject()
    

    更新 Lookup、beanFactory 和 Provider 不支持传递任何参数,即你有 Provider#get() 但没有 Provider#get(Object... args)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-15
      • 2018-01-29
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多