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

Spring BeanFactory 与 FactoryBean 的区别的更多相关文章

  1. Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法

    Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法 1. BeanFactory BeanFactory,以Factory结尾,表示它是一个工厂类(接口),用于 ...

  2. BeanFactory 和FactoryBean的区别

    转自:https://www.cnblogs.com/aspirant/p/9082858.html BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是 ...

  3. Spring中BeanFactory与FactoryBean的区别

    在Spring中有BeanFactory和FactoryBean这2个接口,从名字来看很相似,比较容易搞混. 一.BeanFactory BeanFactory是一个接口,它是Spring中工厂的顶层 ...

  4. 【Java面试】Spring中 BeanFactory和FactoryBean的区别

    一个工作了六年多的粉丝,胸有成竹的去京东面试. 然后被Spring里面的一个问题卡住,唉,我和他说,6年啦,Spring都没搞明白? 那怎么去让面试官给你通过呢? 这个问题是: Spring中Bean ...

  5. BeanFactory和FactoryBean的区别

    转自:http://blog.csdn.net/wangbiao007/article/details/53183764 1.BeanFactory BeanFactory是IOC最基本的容器,负责生 ...

  6. 转:BeanFactory和FactoryBean的区别

    一.BeanFactory简介 BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持 ...

  7. spring中BeanFactory和FactoryBean的区别

    共同点: 都是接口 区别: BeanFactory 以Factory结尾,表示它是一个工厂类,用于管理Bean的一个工厂 在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器 ...

  8. 【Spring】2、BeanFactory 和FactoryBean的区别

    转自:http://chenzehe.iteye.com/blog/1481476 1. BeanFactory BeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的 ...

  9. spring中的BeanFactory和FactoryBean的区别与联系

    首先,这俩都是个接口… 实现 BeanFactory 接口的类表明此类是一个工厂,作用就是配置.新建.管理 各种Bean. 而 实现 FactoryBean 的类表明此类也是一个Bean,类型为工厂B ...

随机推荐

  1. python : 设计模式之外观模式(Facade Pattern)

    #为啥要用外观模式举例说明 这个例子很形象,直接从人家博客上贴过来的,参考链接在下面 不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶.茶具和开水,如图1(A)所示,而 ...

  2. Docs-.NET-C#-指南-语言参考-关键字:C# 关键字

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字:C# 关键字 1.返回顶部 1. C# 关键字 2017/03/07 关键字是预定义的保留标识符,对编译器有特殊意义. 除非前面有 @ ...

  3. Vue绑定属性 绑定Class 绑定style

    <template> <div id="app"> <h2>{{msg}}</h2> <br> <div v-bi ...

  4. Zabbix 3.2.6-Mysql多实例监控-Percona Monitoring Plugins自动发现

    mysql多实例监控实录   系统环境: cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 内核版本: uname -r 3.1 ...

  5. ios开发将截图保存到相册

    - (void)loadImageFinished:(UIImage *)image { UIImageWriteToSavedPhotosAlbum(image, self, @selector(i ...

  6. 123457123456#0#----com.ppGame.HappyShuXue54--前拼后广--儿童数学_pp

    com.ppGame.HappyShuXue54--前拼后广--儿童数学_pp

  7. python解决排列组合

    笛卡尔积:itertools.product(*iterables[, repeat]) import itertools for i in itertools.product('BCDEF', re ...

  8. Word中如何加载EndNote

    在百度中搜索了很多解决方案,都不尽相同忙了一上午也没解决,然后搁浅,吃过午饭回来在安装目录下找到如下exe文件三四步点击搞定 所以,有时候问题出现了长时间没解决,可以换下环境出去溜达一圈说不定就茅塞顿 ...

  9. Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

    https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...

  10. 【Luogu P3919】可持久化数组

    数组是一种单点修改,单点查询的基础数据结构. 如果要对数组改进,使之可持久化,那么显然我们需要利用其它的数据结构来改进它. 对于单点修改和单点查询两种操作,很容易发现可持久化线段树也是支持这种操作的. ...