BeanFactory 和FactoryBean有什么区别?

发布时间:2024-03-07 13:05:43
 
  • beanFactorySpring框架的核心接口之一,用于管理和获取Bean对象亦陈为bean的容器。使用了简单工厂模式,提供getBean方法用来获取bean。
  • FactoryBean是一个bean,但是它是一个特殊的bean。

它是一个接口,他必须被一个bean去实现。

FactoryBean接口定义了两个方法:getObject()getObjectType()

getObjectType()方法用于返回创建的Bean对象的类型。

getObject()方法用于返回创建的Bean对象,最终该Bean对象会进行注入,Mybatis集成Spring时的那个SqlSessionFactoryBean就实现了FactoryBean, 最终通过getObject()将SqlSessionFactory注入到Ioc容器中。

所以FactoryBean不是一个普通的Bean,它会表现出工厂模式的样子,可以自定义创建Bean对象的逻辑,可以在创建Bean对象之前进行一些额外的处理。

如果要获得FactoryBean类本身而非getObject()返回的Bean可以通过在BeanName前加“&”进行获取。

 

所以他们直接没有什么关系, 实在要扯上点关系那就是BeanFactory管理了FactoryBean

上一篇 BeanFactory 和 ApplicationContext有什么区别?
下一篇 Spring-Ioc容器的加载过程

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题