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

  • 相关阅读:
    [BZOJ3757] 苹果树
    [WC2013]糖果公园
    [SCOI2005]王室联邦
    luogu P2709 小B的询问
    [国家集训队]小Z的袜子
    [SDOI2009]HH的项链(莫队)
    [国家集训队]数颜色 / 维护队列(莫队)
    setting>SSH>sessions setting>勾选ssh Keepalive[ MobaXterm】设置保持SSH连接
    解决SSH自动断线,无响应的问题。
    Linux下使用bcwipe擦除磁盘空间
  • 原文地址:https://www.cnblogs.com/PengChengLi/p/11281254.html
Copyright © 2011-2022 走看看