Java入门到精通——框架篇之Spring源码分析Spring两大核心类
一、Spring核心类概述。
Spring里面有两个最核心的类这是Spring实现最重要的部分。
1、DefaultListableBeanFactory
这个类位于Beans项目下的org.springframework.beans.factory.support包下。
XmlBeanFactory(位于org.springframework.beans.factory.xml包)继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核心部分,是Spring注册加载bean的默认实现,而对于XmlBeanFactory与DefaultListableBeanFactory不同的地方是XmlBeanFactory中使用了自定义的XML读取器XmlBeanDefinitionReader,实现了个性化的BeanDefinitionReader读取,DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口。
2、XmlBeanDefinitionReader这个类位于org.springframework.beans.factory.xml包下。
XML配置文件的读取是Spring中重要的功能,因为Spring的大部分功能都是以配置文件作为切入点的。那么我们可以从XmlBeanDefinitionReader中树立一下资源文件读取、解析及注册的功能。
二、两大核心类的层次结构图。
1、DefaultListableBeanFactory
从图中不难发现这个类如何从底层一步一步封装起来的。
下面大致的介绍一下主要几个类的作用:
AliasRegistry:对alias的简单增删改查
SimpleAliasRegistry:主要使用map作为alias的缓存,并对接口AliasRegistry进行实现
SinglegtonBeanRegistry:定义对单例的注册以及获取。
BeanFactory:定义获取Bean及Bean的各种属性。
DefaultSingletonBeanRegistry:对接口SinglegtonBeanRegistry的各个函数的实现。
HiberarchicalBeanFactory:集成BeanFactory,对BeanFactory功能基础上加上了parentFactory的支持。
BeanDefiniRegistry:定义BeanDefinition的各种增删改查操作。
FactoryBeanRegistrySuppourt:在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理。
CongfigurableBeanFactory:提供配置Factory的各种方法。
ListableBeanFactory:根据各种条件获取Bean的配置清单。
AbstractBeanFactory:综合了FactoryBeanRegistrySuppourt和CongfigurableBeanFactory的功能。
AutowireCapableBeanFacotry:提供创建bean、自动注入、初始化以及应用bean的后处理器。
AbstractAutowireCapableBeanFactory:综合AbstractBeanFactory并对接口AutowireCapableBeanFactory进行实现
ConfigurableListableBeanFactory:BeanFactory配置清单,指定护绿类型及接口DefaultListableBeanFactory:综合了上面所有功能组要对Bean注册后的处理
2.XmlBeanDefinitionReader
从这个图我们能看出这个类用如何一步一步的封装起来的。
下面我也简单的说一下主要几个的类有些什么功能:
ResourceLoader:定义资源加载器,主要应用于根据给定的资源文件地址返回对应的Resource。
BeanDefinitionRedader:主要定义资源文件读取并且转化为BeanDefinition的各个功能。
DocumentLoder:定义从资源文件加载到转换为Document的功能。
三、总结。
这篇博客对这两个核心类大概的讲述了一下,下面的系列博客会详细的讲述这些类内部是如何实现的。
Java入门到精通——框架篇之Spring源码分析Spring两大核心类的更多相关文章
- spring源码分析系列 (8) FactoryBean工厂类机制
更多文章点击--spring源码分析系列 1.FactoryBean设计目的以及使用 2.FactoryBean工厂类机制运行机制分析 1.FactoryBean设计目的以及使用 FactoryBea ...
- 【Spring源码分析系列】启动component-scan类扫描加载过程
原文地址:http://blog.csdn.net/xieyuooo/article/details/9089441/ 在spring 3.0以上大家都一般会配置一个Servelet,如下所示: &l ...
- spring源码分析系列3:BeanFactory核心容器的研究
目录 @(spring源码分析系列3:核心容器的研究) 在讲容器之前,再明确一下知识点. BeanDefinition是Bean在容器的描述.BeanDefinition与Bean不是一个东西. Be ...
- Java入门到精通——框架篇之Hadoop概述
一.Hadoop来历 Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明了倒排索引算法,通过加入了Map ...
- spring源码阅读(2)核心类介绍
(1).BeanFactory作为一个主接口不继承任何接口,暂且称为一级接口. (2).有3个子接口继承了它,进行功能上的增强.这3个子接口称为二级接口. (3).ConfigurableBeanFa ...
- spring源码分析系列
spring源码分析系列 (1) spring拓展接口BeanFactoryPostProcessor.BeanDefinitionRegistryPostProcessor spring源码分析系列 ...
- Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步
Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步 一.概述 PV操作是对信号量进行的操作. 进程同步是指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消 ...
- spring源码分析之spring-core总结篇
1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持. spring-core从源码上看,分为6个package,分别是asm,cgli ...
- 框架-spring源码分析(一)
框架-spring源码分析(一) 参考: https://www.cnblogs.com/heavenyes/p/3933642.html http://www.cnblogs.com/BINGJJF ...
随机推荐
- GCD BZOJ2818 [省队互测] 数学
题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入样例#1: 复制 4 ...
- Fast Matrix Operations UVA - 11992 线段树
题意翻译 有一个r行c列的全0矩阵,有以下三种操作. 1 X1 Y1 X2 Y2 v 子矩阵(X1,Y1,X2,Y2)的元素加v 2 X1 Y1 X2 Y2 v 子矩阵(X1,Y1,X2,Y2)的元素 ...
- Exalogic 物理连线
以上图表为Exalogic 1/8配中的思科交换机连线,而1/4配.半配.满配的内置思科交换机连线基本上与以上图表一致.下面对该图表进行简要说明: (1).每台计算节点,只需要从net0上连接一根线到 ...
- 移动像素的px ,dp/pt,dpr的关系
一:基础知识 px:逻辑像素,浏览器使用的抽象单位 dp,pt:设备无关像素 也叫物理像素 dpr:devicePixelRatio 设备像素缩放比 计算公式:1px=(dpr)^2*dp; ipho ...
- 网站安装 https 证书
1.点击进入官网 数安时代 2.点击选择你需要的ssl 证书 3.点击进入选择 免费申请 ,填写你需要 安装 ssl 证书 的域名 4.根据你的需求选择,我这里选择的是 数安时代 ,接下来按照步骤操 ...
- 【算法笔记】B1041 考试座位号
1041 考试座位号 (15 分) 每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生 ...
- 关于webpack 以及 webpack配置和常用插件的学习记录 (2) ------ devServer
DevServer: devserver会启动一个http服务器用于服务网页请求,接收webpack发出的文件变化的信号.通过websocket协议自动刷新网页,实现实时预览. 安装: npm i w ...
- Linux设备驱动开发基础--内核定时器
1. Linux内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 <Linux/timer.h> 和 kernel/timer.c 文件 ...
- 小问题总结:鼠标点击到输入框(input)里的时候,输入框的提示消失,鼠标再移开,输入框提示出现
问题如标题: 鼠标点击到输入框(input)里的时候,输入框的提示消失,鼠标再移开,输入框提示出现.如图所示: 做法如下: <input type="text" name ...
- Js与标签属性
关于在JS中设置标签属性 2017-10-09 23:04 by 清风221, 12790 阅读, 0 评论, 收藏, 编辑 Attribute 该属性主要是用来在标签行内样式,添加.删除.获取属性. ...