Spring -> BeanFactory 与FactoryBean有什么区别?

BeanFactory 与FactoryBean有什么区别?

Bean Factory是一个接口,Factory是工厂,Bean Factory其实就是一个工厂接口

  • BeanFactory: IOC容器的核心接口,定义了getBean()、containsBean()等管理Bean的通用方法。
  • BeanFactory就是一个工厂接口,IOC容器其实就像一个工厂,用来生产一些Bean
    • Bean工厂和Bean容器实际上意思差不多
  • 那么BeanFactory作为一个接口,其实就是给Bean容器制定规范的
  • 结论: BeanFactory 是给 IOC容器制定规范的
    • 规定了IOC容器有getBean()这样获取Bean丶管理Bean的方法

FactoryBean也是一个接口,它说出花来,它也是用来制定规范的

  • FactoryBean是用来制定谁的规范的?

    • 是一个Bean的规范,这个Bean的名字叫做工厂
  • 所以FactoryBean的理解就是给一类叫做工厂的特殊的Bean做规范的

所以我们可以得出这样一个结论

  • IOC容器生产的Bean有普通的Bean,有稍微特殊的Bean叫工厂Bean,
  • 工厂Bean又可以生产出有其他特点的Bean对象
  • 实现了FactoryBean接口的工厂Bean可以生产特殊的Bean
  • 这些特殊的Bean是什么?
    • AOP的Bean对象就是则类特殊的Bean
    • 我们自己随便弄的Bean就是普通的Bean
  • 我们要将普通的Bean变成AOP的代理Bean,就要通过反射动态生成一个实现了FactoryBean的代理类
  • 类似的还有事务相关的Bean
  • 注意: FactoryBean使用了工厂模式和装饰者模式
    • 将一个普通的Bean包装成一个功能较多的Bean用的就是装饰者模式

区别

  • BeanFactory 和 FactoryBean都是工厂接口
    • BeanFactory 说的是IOC容器,是给生产普通Bean做规范的
    • FactoryBean说的是容器中的工厂Bean,是给生产特殊的Bean做规范的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值