zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python-炫酷二维码
    Dictionary 序列化与反序列化
    获取数据库所有表名与字段名
    LinQ To Object 基本用法
    使用jq操作脚本生成元素的事件
    表单验证如何让select设置为必选
    js实现复制功能兼容ios
    微信小程序使用函数防抖解决重复点击消耗性能问题
    electronr进行签名与公证
    使用electron在mac升级签名后进行升级出现“QRLUpdaterErrorDomain”的错误
  • 原文地址:https://www.cnblogs.com/PengChengLi/p/11281254.html
Copyright © 2011-2022 走看看