当前位置: 首页 > 知识库问答 >
问题:

Spring:查找方法注入、Provider、ObjectFactory和factoryBean之间的区别

薄欣怿
2023-03-14

查找方法注入、提供程序有什么区别


共有1个答案

纪辰沛
2023-03-14

也请检查我的问题:如何在运行时实例化Spring托管bean?

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

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

同样对于对象工厂,你必须编写与 spring 代码(对象工厂需要 spring 导入):

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

Upd Lookup、beanFactory和Provider不支持传递任何参数,即您有Provider#get(),但没有Provider#get(Object…args)

 类似资料:
  • 本文向大家介绍Spring的IOC和依赖注入之间的区别。,包括了Spring的IOC和依赖注入之间的区别。的使用技巧和注意事项,需要的朋友参考一下 控制反转是一种设计原则,有助于反转对象创建的控制。 根据马丁·福勒(Martin Fowler)的论文,控制反转是程序控制流反转的原理:外部源(框架,服务,其他组件)代替程序控制程序流,而由程序控制流它。就像我们将某些东西插入其他东西一样。他提到了有关

  • 问题内容: Django 有两种方法,和。该文档说: 与gregation()不同,annotate()不是终端子句。annotate()子句的输出是QuerySet。 它们之间还有其他区别吗?如果没有,那为什么存在呢? 问题答案: 我将重点放在示例查询而不是文档中的引用上。A计算整个查询集的值。计算查询集中每个项目的汇总值。 聚合 返回包含查询集中所有书籍的平均价格的字典。 注解 q 是书籍的查

  • 问题内容: spring 和注释之间的区别。 可以注解同时用于Web MVC框架和REST的应用程序? 如果是,我们如何区分是Web MVC还是REST应用程序。 问题答案: 用于将类标记为。 是一个方便注释,仅添加和注释(参见:Javadoc) 所以以下两个控制器定义应该做的一样

  • 问题内容: 问题: 1)和之间的区别? 我已经读过,两者都消除了将连接代码放入XML中的必要性,但是并没有获得两者之间的区别。 2)之间有什么区别,和? -何时使用哪个? -每个优点/缺点是什么? 问题答案: 并且确实是非常不同类型的注释。 以及类似的注释(,等)及其对应的JSR-330允许您声明要通过自动扫描拾取的bean , 或者它们为类注册了bean定义,因此它们大致等效于使用以下命令声明指

  • 本文向大家介绍Spring BeanFactory和FactoryBean区别解析,包括了Spring BeanFactory和FactoryBean区别解析的使用技巧和注意事项,需要的朋友参考一下 BeanFactory接口: IoC容器的顶级接口,是IoC容器的最基础实现,也是访问Spring容器的根接口,负责对bean的创建,访问等工作。 其实在容器的初始化的时候,会对BeanFactory

  • 本文向大家介绍Spring中@Bean和@Component批注之间的区别。,包括了Spring中@Bean和@Component批注之间的区别。的使用技巧和注意事项,需要的朋友参考一下  Spring支持多种类型的注释,例如@ Component,@ Controller,@ service @Repository和@Bean。所有这些都可以在org.springframework.stereo