在Spring 中,有两个很容易混淆的类:BeanFactory 和FactoryBean。

BeanFactory:Bean 工厂,是一个工厂(Factory),我们Spring IOC 容器的最顶层接口就是这个BeanFactory,它的作用是管理Bean,即实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

FactoryBean:工厂Bean,是一个Bean,作用是产生其他bean 实例。通常情况下,这种Bean 没有什么特别的要求,仅需要提供一个工厂方法,该方法用来返回其他Bean 实例。通常情况下,Bean 无须自己实现工厂模式,Spring 容器担任工厂角色;但少数情况下,容器中的Bean 本身就是工厂,其作用是产生其它Bean 实例。

当用户使用容器本身时,可以使用转义字符”&”来得到FactoryBean 本身,以区别通过FactoryBean产生的实例对象和FactoryBean 对象本身。在BeanFactory 中通过如下代码定义了该转义字符:String FACTORY_BEAN_PREFIX = "&";

如果myJndiObject 是一个FactoryBean,则使用&myJndiObject 得到的是myJndiObject 对象,而不是myJndiObject 产生出来的对象。

关于FactoryBean 和BeanFactory相关推荐

  1. java中factory_Java后台面试--Spring中FactoryBean与BeanFactory的使用及区别

    以前刚转Java的时候去面试被问到过Spring中FactoryBean与BeanFactory的使用及区别,由于之前没有重视这两个的区别,只是在配置文件里面加bean结点并通过注解的形式调用,所以被 ...

  2. IOC 容器中那些鲜为人知的细节(关于 FactoryBean 和 BeanFactory)

    1.博客内容均出自于咕泡学院架构师第三期 2.架构师系列内容:架构师学习笔记(持续更新) 在 Spring 中,有两个很容易混淆的类:BeanFactory 和 FactoryBean. BeanFa ...

  3. factorybean与beanfactory

    前面提到了beanfactory会根据beandefinition来创建容器中的bean对象,beanfactory是一个工厂,而factorybean是一个bean,但是它本身也可以生产出另外的be ...

  4. 被问懵了,BeanFactory和FactoryBean接口的区别到底是什么?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:ゞ .邓澎波 cnbl ...

  5. Spring中 BeanFactory 与 FactoryBean 的区别

    作者:叁滴水 blog.csdn.net/qq_30285985/article/details/115433099 文章目录 前言 为什么会有FactoryBean? 通过源码深入学习Factory ...

  6. [spring源码学习]六、IOC源码-BeanFactory和factory-bean

    https://www.cnblogs.com/jyyzzjl/p/5459335.html 一.代码实例 在我们分析spring的IOC源码的时候,发现除了配置标准的bean,并且通过getBean ...

  7. Spring bean 之 FactoryBean

    原文地址:http://www.carlzone.cn/spring... Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean.Spring Fac ...

  8. ApplicationContext和BeanFactory

    BeanFactory - BeanFactory 就像一个包含 bean 集合的工厂类.它会在客户端 要求时实例化 bean. ApplicationContext - ApplicationCon ...

  9. Spring拓展接口之FactoryBean

    1.是什么 FactoryBean的源码比较简单,大家可以细读下其注释. /*** 实现此接口的bean不能用作普通bean.此bean暴露的对象是通过getObject()创建的对象,而不是它自身* ...

最新文章

  1. 贝塞尔曲线与CAShapeLayer的关系以及Stroke动画
  2. 第三次学JAVA再学不好就吃翔(part39)--package关键字
  3. iOS SQLite函数总结
  4. MessageFormat 格式化String
  5. 使用inetaddress测试目标可达性_纯java手写打造方法级白盒测试框架
  6. 详解nginx 代理多个服务器(多个server方式)
  7. 安卓Intent的Action中的常值变量:窗口action常量(android.intent.action.+xxx),广播action常量(android.intent.action.+xxx)
  8. 【完美】mac word2016 安装 endnote x9
  9. 小强地狱(Bug Hell)——优先级和缺陷修改的平衡
  10. 大时代背景下商业地产的数十年转型发展之路
  11. vue---图像上传/裁剪/预览/删除/查询
  12. SVG 研究之路 - 再談 defs
  13. eNSP——通过Stelnet登录系统网络配置实验
  14. 考拉nbsp;PASCALnbsp;解题报告
  15. 快速爬取链家网的房源信息
  16. netscape.exe_评论-Netscape 6.1
  17. block unicast机制
  18. 不会吧,不会吧,全网最细汉诺塔讲解,不会有人不知道吧。面试官直呼内行,看完只想默默找水喝(C语言)
  19. ai领域职业规划_我如何抛弃我的咨询职业并进入技术领域
  20. open output file xxx exe Permission denied

热门文章

  1. javaBean为什么要implements Serializable
  2. 人生,不过是停下在走
  3. 数字图像处理之点运算
  4. WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题解决方案
  5. 在实际开发中碰到的小问题,保存数据时提示:对象必须实现 IConvertible
  6. 【Java线程】互斥 同步 异步 并发 多线程的区别与联系
  7. 更改整个目录文件的所有权限
  8. php7连接mongodb,批量添加数据
  9. 编写Dockerfiles的最佳做法
  10. JAVA引用和垃圾回收