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

  • 相关阅读:
    feature.xml和workflow.xml的配置说明
    infopath开发中的疑惑
    winform应用程序呈现infopath表单
    一,EXTJS介绍
    AD中各字段在代码访问时的字段表述及访问AD用户的例子
    start blackberry by proxy
    【转】两个Action 动态传参数
    【转】Eclipse中如何查找所有调用方法a()的类
    JAVA 学习记录
    css 选择器 优先级
  • 原文地址:https://www.cnblogs.com/PengChengLi/p/11281254.html
Copyright © 2011-2022 走看看