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,但具备扩展能力,可封装复杂初始化逻辑。
