Lookup 方法注入Provider<T>、ObjectFactory和factoryBean. 如果我想要将原型的新实例(多次)转换为单例,那么哪一个是最佳解决方案?如果我想要将原型 bean 的新实例(多次)转换为原型?
请也检查我的问题:如何在运行时实例化 spring 管理的 bean?
据我了解,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()
Run Code Online (Sandbox Code Playgroud)
Upd Lookup、beanFactory 和 Provider 不支持传递任何参数,即你有 Provider#get() 但没有 Provider#get(Object... args)
| 归档时间: |
|
| 查看次数: |
2409 次 |
| 最近记录: |