gpt4 book ai didi

Spring:Lookup方法注入(inject)、Provider、ObjectFactory和factoryBean之间的区别

转载 作者:行者123 更新时间:2023-12-02 11:57:06 25 4
gpt4 key购买 nike

Lookup方法注入(inject)、Provider<T>有什么区别, ObjectFactoryfactoryBean 。如果我想要将原型(prototype)的新实例(多次)转换为单例,那么哪一个是最佳解决方案?如果我想要将原型(prototype) bean 的新实例(多次)放入原型(prototype)中?

最佳答案

也请检查我的问题: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 接口(interface)来自 JSR-330,我猜它是在 Spring 中实现的,晚于查找方法注入(inject),看起来这是更好的解决方案。 (Google Guice DI 中也实现了同样的功能)

对于对象工厂,您还必须与 spring 代码一起编写(ObjectFactory 需要 spring 导入):

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

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

关于Spring:Lookup方法注入(inject)、Provider<T>、ObjectFactory和factoryBean之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com