先来看看Java代码获取Spring中Bean的代码(一共有五种方式,这里只展示其中一种方法):

有没有发现上面的代码与利用反射实现工厂模式的代码很相似。对,你没有看错,Spring中的BeanFactory用到的就是简单工厂模式。

现在的思路就更加清晰了,要想实现Spring中的BeanFactory,无非就用到了以下几个技术:

1.使用简单工厂模式来处理bean容器。

2.解析xml文件,获取配置中的元素信息。

3.利用反射获实例化配置信息中的对象。

4.如果有对象注入,使用invoke()方法。

5.实例化的对象放入bean容器中,并提供getBean方法。

通过以上步骤就实现了spring的BeanFactory功能,只要在配置文件中配置好,实例化对象的事情交给BeanFactory来实现,用户不需要通过new对象的方式实例化对象,直接调用getBean方法即获取对象实例。

当然在springboot中就没有spring的xml文件了。

来源:https://blog.csdn.net/mlc1218559742/article/details/52776160

转载于:https://www.cnblogs.com/theRhyme/p/9397540.html

BeanFactory的实现原理相关推荐

  1. 回客科技 面试的 实现ioc 容器用到的技术,简述BeanFactory的实现原理,大搜车面试的 spring 怎么实现的依赖注入(DI)...

    前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱.所以需要继续加强. 这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说 ...

  2. Spring源码分析-从源码看BeanFactory和FactoryBean的区别

    导语   在使用Spring 中最为核心的操作就是Bean的创建以及使用.下面就来带着大家一起来分析一下关于Spring的Bean的加载相关的知识 文章目录 BeanFactory getBean方法 ...

  3. Spring学习(三)--Spring的IOC

    1.BeanFactory和FactoryBean BeanFactory是一个接口类,定义了IOC容器最基本的形式,提供了IOC容器所应该遵守的基本服务契约. FactoryBean是一个能产生或者 ...

  4. 来自朋友最近阿里、腾讯、美团等P7岗位面试题

    来自年初和最近朋友的大厂面试题. 阿里巴巴 对象如何进行深拷贝,除了clone happen-before原则 jvm调优的实践 单例对象会被jvm的gc时回收吗 redis如果list较大,怎么优化 ...

  5. Spring IOC(一):概述

    参考书籍:<Spring技术内幕> 系列文章 Spring IOC(一):概述 Spring IOC(二):初始化 Spring IOC(三):依赖注入 Spring IOC(四):相关特 ...

  6. JNDI注入之略微学学

    前言 JNDI注入! 环境版本:JDK1.8.0-66 JNDI概念 JNDI 全称为 Java Naming and Directory Interface(Java 命名与目录接口) 是SUN公司 ...

  7. Spring框架设计模式分析

    在Java web的开发过程中,目前企业级应用程序采用较多的开发框架是SSH(Spring+SpringMVC+Hibernate,用SpringMVC来代替Struts).本文通过阅读Spring的 ...

  8. activiti源码解析重磅来袭

    activiti源码解析视频课程大概80课,会一直更新...,目前录制完毕的视频如下: 第2课:Activiti源码获取以及编译 第3课:流程引擎配置类的作用,配置方式.开关属性技巧.手动构建.Act ...

  9. 阿里、腾讯、美团等P7岗位面试题

    来自朋友最近阿里.腾讯.美团等P7岗位面试题 程序员小灰 昨天 以下文章来源于艾小仙 ,作者艾小仙 艾小仙 2本学渣,阿里P7,9年码龄,纵观半生,产品运营,开发测试,app游戏,大厂小厂,雨露均沾, ...

最新文章

  1. LeetCode: 58. Length of Last Word
  2. JavaScript碎片
  3. 本文把TCP/IP讲绝了!
  4. ZigZag Conversion leetcode java
  5. Google DayDream VR开发
  6. 机房系统(七)——【报表】
  7. python batch_size_python 實現動態 batch size,多張圖片如何堆疊轉成指針
  8. FastDfs之TrackerServer的详细配置介绍
  9. Codeforces Gym 100187D D. Holidays 排列组合
  10. Collectors.summingDouble()
  11. 查看工作日志Linux,工作日志,Linux的表现还是不错的
  12. linux 查看nginx,php-fpm运行用户及用户组
  13. localtime选择00:00值不回显_配置OSPF的DR选择示例
  14. 19年计算机专硕学硕报名人数,2019年研究生招生报考权威数据排行,报考人数逐年上升的态势!...
  15. 2016hctf writeup
  16. Springboot with Impala and Kudu
  17. trove mysql 镜像_openstack trove 数据库镜像构建列表
  18. 深入理解JVM学习(b站 张龙视频 P1-P14)
  19. go get golang.org/x/tools 失败解决
  20. 鹰软件测试初学者,刚入手的 4T紫盘 和 4T酷鹰 测试对比

热门文章

  1. springboot 请求路径有后缀_SpringBoot中配置Web静态资源路径的方法
  2. appinventor如何做个游戏_单亮:游戏的重要性
  3. 仅需5道题轻松掌握Python命令行相关标准库 | Python技能树征题
  4. java 改变文件权限_Java文件权限
  5. sql除外语句_SQL除外
  6. kotlin_Kotlin
  7. unix和linux命令_Linux / Unix系统中SSH命令的用法
  8. jsf 自定义属性_JSF资源包,自定义消息示例教程
  9. viewflipper_Android ViewFlipper示例教程
  10. adalm pluto_将Apache Pluto与Lucene搜索引擎示例教程集成