BeanFactory是Spring框架的核心IoC容器接口,负责管理所有Bean的生命周期;
FactoryBean是一个特殊的Bean接口,用于自定义复杂对象的创建逻辑。
BeanFactory
是容器,管理所有Bean(包括FactoryBean
),FactoryBean
是被管理的Bean,只是它有特殊能力可以创建其他Bean。
BeanFactory。
- 角色:作为Spring IoC容器的核心接口,是Spring框架的“心脏”,负责管理Bean的创建、配置、依赖注入及生命周期。
- 功能:提供基础方法如
getBean()
、containsBean()
等,支持懒加载(默认首次请求时实例化)。 - 典型实现:
DefaultListableBeanFactory
、ApplicationContext
(扩展了企业级功能如AOP)。
FactoryBean。
- 角色:是一个能动态生成其他Bean的特殊Bean,适用于复杂对象的定制化创建(如代理对象、连接池等)。
- 核心方法:
getObject()
返回实际Bean实例,getObjectType()
定义返回类型,isSingleton()
控制单例模式。 - 典型应用:MyBatis的
SqlSessionFactoryBean
、Spring AOP的ProxyFactoryBean
核心区别
- 获取对象方式:
BeanFactory
直接返回容器中注册的Bean实例(如getBean("beanName")
)。FactoryBean
默认返回getObject()
的结果,需通过&
前缀(如getBean("&factoryBeanName")
)获取自身。
- 设计目的:
BeanFactory
是容器规范,管理所有Bean(包括FactoryBean
)。FactoryBean
是被管理的Bean,但具备扩展能力,可封装复杂初始化逻辑。