BeanFactory的实现原理
先来看看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的实现原理相关推荐
- 回客科技 面试的 实现ioc 容器用到的技术,简述BeanFactory的实现原理,大搜车面试的 spring 怎么实现的依赖注入(DI)...
前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱.所以需要继续加强. 这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说 ...
- Spring源码分析-从源码看BeanFactory和FactoryBean的区别
导语 在使用Spring 中最为核心的操作就是Bean的创建以及使用.下面就来带着大家一起来分析一下关于Spring的Bean的加载相关的知识 文章目录 BeanFactory getBean方法 ...
- Spring学习(三)--Spring的IOC
1.BeanFactory和FactoryBean BeanFactory是一个接口类,定义了IOC容器最基本的形式,提供了IOC容器所应该遵守的基本服务契约. FactoryBean是一个能产生或者 ...
- 来自朋友最近阿里、腾讯、美团等P7岗位面试题
来自年初和最近朋友的大厂面试题. 阿里巴巴 对象如何进行深拷贝,除了clone happen-before原则 jvm调优的实践 单例对象会被jvm的gc时回收吗 redis如果list较大,怎么优化 ...
- Spring IOC(一):概述
参考书籍:<Spring技术内幕> 系列文章 Spring IOC(一):概述 Spring IOC(二):初始化 Spring IOC(三):依赖注入 Spring IOC(四):相关特 ...
- JNDI注入之略微学学
前言 JNDI注入! 环境版本:JDK1.8.0-66 JNDI概念 JNDI 全称为 Java Naming and Directory Interface(Java 命名与目录接口) 是SUN公司 ...
- Spring框架设计模式分析
在Java web的开发过程中,目前企业级应用程序采用较多的开发框架是SSH(Spring+SpringMVC+Hibernate,用SpringMVC来代替Struts).本文通过阅读Spring的 ...
- activiti源码解析重磅来袭
activiti源码解析视频课程大概80课,会一直更新...,目前录制完毕的视频如下: 第2课:Activiti源码获取以及编译 第3课:流程引擎配置类的作用,配置方式.开关属性技巧.手动构建.Act ...
- 阿里、腾讯、美团等P7岗位面试题
来自朋友最近阿里.腾讯.美团等P7岗位面试题 程序员小灰 昨天 以下文章来源于艾小仙 ,作者艾小仙 艾小仙 2本学渣,阿里P7,9年码龄,纵观半生,产品运营,开发测试,app游戏,大厂小厂,雨露均沾, ...
最新文章
- LeetCode: 58. Length of Last Word
- JavaScript碎片
- 本文把TCP/IP讲绝了!
- ZigZag Conversion leetcode java
- Google DayDream VR开发
- 机房系统(七)——【报表】
- python batch_size_python 實現動態 batch size,多張圖片如何堆疊轉成指針
- FastDfs之TrackerServer的详细配置介绍
- Codeforces Gym 100187D D. Holidays 排列组合
- Collectors.summingDouble()
- 查看工作日志Linux,工作日志,Linux的表现还是不错的
- linux 查看nginx,php-fpm运行用户及用户组
- localtime选择00:00值不回显_配置OSPF的DR选择示例
- 19年计算机专硕学硕报名人数,2019年研究生招生报考权威数据排行,报考人数逐年上升的态势!...
- 2016hctf writeup
- Springboot with Impala and Kudu
- trove mysql 镜像_openstack trove 数据库镜像构建列表
- 深入理解JVM学习(b站 张龙视频 P1-P14)
- go get golang.org/x/tools 失败解决
- 鹰软件测试初学者,刚入手的 4T紫盘 和 4T酷鹰 测试对比
热门文章
- springboot 请求路径有后缀_SpringBoot中配置Web静态资源路径的方法
- appinventor如何做个游戏_单亮:游戏的重要性
- 仅需5道题轻松掌握Python命令行相关标准库 | Python技能树征题
- java 改变文件权限_Java文件权限
- sql除外语句_SQL除外
- kotlin_Kotlin
- unix和linux命令_Linux / Unix系统中SSH命令的用法
- jsf 自定义属性_JSF资源包,自定义消息示例教程
- viewflipper_Android ViewFlipper示例教程
- adalm pluto_将Apache Pluto与Lucene搜索引擎示例教程集成