Bean Factory与 Factory Bean 的区别

核心区别:Bean Factory 是 Spring 的容器接口,负责管理和创建所有 Bean;而 Factory Bean 是一个特殊的 Bean,其作用是定制化创建其他 Bean 的过程。

简单来说,Bean Factory 是“大工厂”,管理着所有“产品”(Bean);Factory Bean 则是“大工厂”里的一个“特殊机器”,专门用来生产某一类复杂的“产品”(Bean)。

1. Bean Factory

  • 角色定位:它是 Spring IoC 容器的顶层接口,是 Spring 容器的核心骨架,定义了容器的基本功能,如获取 Bean、判断 Bean 是否存在等。

  • 核心功能:

      负责加载、实例化、配置和管理所有的 Bean。
    
      提供 Bean 的生命周期管理。
    
      实现依赖注入(DI)。
    
  • 常见实现:我们日常开发中使用的 ApplicationContext(如 ClassPathXmlApplicationContext)就是它的高级实现类,在 Bean Factory 基础上增加了更多功能(如事件发布、AOP 集成等)。

2. Factory Bean

  • 角色定位:它是一个特殊的 Bean,本身也由 Bean Factory 管理。当你向容器请求一个 Factory Bean 时,它返回的不是自身实例,而是它所“生产”的目标 Bean。

  • 核心功能:用于创建复杂或特殊的 Bean。当一个 Bean 的创建过程涉及大量配置、依赖或动态逻辑时,使用 Factory Bean 可以将创建逻辑封装起来,简化配置。

  • 使用方式:需要实现 org.springframework.beans.factory.FactoryBean 接口,并实现其三个核心方法:

      T getObject():返回由 Factory Bean 创建的目标 Bean 实例。
    
      Class<?> getObjectType():返回目标 Bean 的类型。
    
      boolean isSingleton():指定目标 Bean 是否为单例。
    
  • 示例场景:创建数据库连接池(DataSource)、MyBatis 中的 SqlSessionFactory 等,这些 Bean 的创建过程复杂,通常会通过 Factory Bean 来实现。

总结

Bean Factory 是“管理者”,统筹所有 Bean 的生老病死;Factory Bean 是“生产者”,是 Bean Factory 手下一个精通某类复杂 Bean 制造的“技术工种”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值