Spring源码深度解析读书笔记

聊聊源码Spring 专栏收录该内容
2 篇文章 0 订阅

Spring源码深度解析大纲知识点

在这里插入图片描述
在这里插入图片描述

搭建Spring环境

1、下载github—64bit
https://desktop.github.com/
在这里插入图片描述
clone不了Spring源码,改为git客户端然后clone
在这里插入图片描述
2、安装gradle
http://gradle.org/downloads
gradle与maven起相同的作用,只是gradle是一个基于groovy的构建工具。

2.1创建目录
2.2将系统变量添加到path中
2.3打开cmd,输入gradle -v
在这里插入图片描述
由于我使用的gradle版本比较高,需要jdk8才可以使用
修改JAVA_HOME的环境变量
在这里插入图片描述
3、clone后的源码
在这里插入图片描述
4、导入Idea在这里插入图片描述
这段时间会比较长。为什么呢?因为需要用gradle管理spring-framework框架的依赖的jar包。所以Idea下面会有进度条。在这里插入图片描述
那么再这段时间再来回顾下这些模块都是干什么的?

Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP.
核心技术:依赖注入,事件,资源,i18n,验证,数据绑定,类型转换,SpEL,AOP。

Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient.
测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。

Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML.
数据访问:事务,DAO支持,JDBC,ORM,编组XML。

Spring MVC and Spring WebFlux web frameworks.
Spring MVC和 Spring WebFlux Web框架。

Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache.
集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。

Languages: Kotlin, Groovy, dynamic languages.
语言:Kotlin,Groovy,动态语言。

官网指南:
https://spring.io/guides

核心类介绍(重点学习对象)

1.DefaultListableBeanFactory
xmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核心部分,是spring注册以及加载bean的默认实现。而对于XmlBeanFactory与DefaultListableBeanFactory.不同的地方其实是在XmlBeanFactory中使用了自定义XML读取器XmlBeanDefinitionReader,实现个性化的BeanDefineitionReader读取,DefaultListableFactory继承了abstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口。在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
2、XmlBeanDefinitionReader在这里插入图片描述
ResourceLoader:定义资源加载器,主要用于根据给定的资源文件地址返回对应的resource。
BeanDefinitionReader:主要定义资源文件读取并转换为BeanDefinition的各个功能。
EnvironmentCapable:定义获取Environment方法。
DoucumentLoader:定义从资源文件加载到转换为Document的功能。
AbstractBeanDefinitionReader:对于EnvironmentCapable和BeanDefinitionReader类定义的功能实现。
BeanDefinitionDocumentReader:定义读取Document并注册BeanDefinition功能。
BeanDefinitionParseDelegate:定义解析Element的各种方法。
在这里插入图片描述

看着这个图我们可以知道他的原理过程:
XmlBeanDefinitionReader通过继承abstractbeandefinitionReader中的方法,来使用ResourceLoader将资源文件转化为resource,然后通过documentLoader对resource文件进行转换,将resource文件转换为document文件。
通过实现BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumetnReader类对Document进行解析,并使用BeanDefinitionParseDelegate对Element进行解析。

在这里插入图片描述

  • 3
    点赞
  • 1
    评论
  • 35
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页

打赏

小诚信驿站

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值