• Spring BeanFactory 与 FactoryBean 的区别


    BeanFactory 和 FactoryBean 都是Spring Beans模块下的接口

    BeanFactory是spring简单工厂模式的接口类,spring IOC特性核心类,提供从工厂类中获取bean的各种方法,是所有bean的容器。见以下结构视图

    FactoryBean仍然是一个bean,但不同于普通bean,它的实现类最终也需要注册到BeanFactory中。它也是一种简单工厂模式的接口类,但是生产的是单一类型的对象,与BeanFactory生产多种类型对象不同。

    FactoryBean是一个接口,实现了这个接口的类,在注册到spring BeanFactory后,并不像其它类注册后暴露的是自己,它暴露的是FactoryBean

    中getObject方法的返回值。这一点可在FactoryBean的类注释上找到证据。

    /** * Interface to be implemented by objects used within a {@link BeanFactory} which * are themselves factories for individual objects. If a bean implements this * interface, it is used as a factory for an object to expose, not directly as a * bean instance that will be exposed itself. * * <p><b>NB: A bean that implements this interface cannot be used as a normal bean.</b> * A FactoryBean is defined in a bean style, but the object exposed for bean * references ({@link #getObject()}) is always the object that it creates.

    比如:在spring配置文件中配置了名字 myFcBean 的一个类型,该类型是 FactoryBean 的实现类。那么通过

    BeanFactory.getBean(“myFcBean”) 返回的并不是这个类型本身的对象,而是调用这个对象的getObject方法的返回值。

    FactoryBean的结构见下图

    转载自:https://baijiahao.baidu.com/s?id=1623501566419189221&wfr=spider&for=pc

  • 相关阅读:
    理解和驾驭软件开发的那些事儿
    Dubbo 泛化调用的参数解析问题及一个强大的参数解析工具 PojoUtils
    HBase指定大量列集合的场景下并发拉取数据时卡住的问题排查
    阅读的收获
    碎碎念集萃二十
    《深度工作》学习笔记
    系统思考学习笔记
    思考力笔记
    碎碎念集萃十九
    设计方案考量的准则与细则
  • 原文地址:https://www.cnblogs.com/PengChengLi/p/11281254.html
Copyright © 2020-2023  润新知