前言
Spring是分层的full-stack(全栈)轻量级开源框架,以IOC和APO和内核,提供了展现层SpringMVC和业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,已经成为使用最多的JavaEE企业应用开源框架。
而我们经常说的Spring其实指的是Spring Framework(Spring框架)。
今天咱们来分享个《Spring高级源码笔记》,总共包含七大部分的内容
-
第一部分 Spring概述(基本情况)
-
第二部分 核心思想IOC和APO
-
第三部分 手写实现IOC和APO(自定义Spring框架)
-
第四部分 SpringIOC高级应用(1.基础知识 2.高级特性)
-
第五部分 SpringIOC源码深度剖析(1.设计非常优雅 2.设计模式 3.注意:原则、方法和技巧)
-
第六部分 SpringAPO高级应用(声明式事务控制)
-
第七部分 SpringAPO源码深度剖析(必要的笔记、必要的图、通俗易懂的语言化解知识难点)

第一部分 Spring概述(基本情况)
-
第1节 Spring简介
-
第2节 Spring发展历程
-
第3节 Spring的优势

Spring的优势
- 第4节 Spring的核心结构

Spring的核心结构
第二部分 核心思想IOC和APO
注意:IOC和AOP不是spring提出的,在spring之前就已经存在,只不过更偏向于理论化,spring在技术层次把这两个思想做了⾮常好的实现(Java)
- 第1节 IOC

IOC
- 第2节 AOP

AOP
第三部分 手写实现IOC和APO(自定义Spring框架)
上⼀部分我们理解了 IoC 和 AOP 思想,我们先不考虑 Spring 是如何实现这两个思想的,此处准备了⼀个『银⾏转账』的案例,请分析该案例在代码层次有什么问题 ?分析之后使⽤我们已有知识解决这些问题(痛点)。其实这个过程我们就是在⼀步步分析并⼿写实现 IoC 和 AOP。
-
第1节 银行转账案例界面
-
第2节 银行转账案例表结构
-
第3节 银行转账案例代码调用结构
-
第4节 银行转账案例关键代码

代码有点多...
-
第5节 银行转账案例代码问题分析
-
第6节 问题解决思路
-
第7节 案例代码改造

问题分析+代码改造
第四部分 SpringIOC高级应用
- 第1节 SpringIOC基础

SpringIOC基础
- 第2节 SpringIOC高级特性

SpringIOC高级特性
第五部分 SpringIOC源码深度剖析
(1)好处:提⾼培养代码架构思维、深⼊理解框架
(2)原则:
-
定焦原则:抓主线
-
宏观原则:站在上帝视⻆,关注源码结构和业务流程(淡化具体某⾏代码的编写细节)
(3)读源码的⽅法和技巧
-
断点(观察调⽤栈)
-
反调(Find Usages)
-
经验(spring框架中doXXX,做具体处理的地⽅)
(4)Spring源码构建
-
1.下载源码(github)
-
2.安装gradle 5.6.3(类似于maven) Idea 2019.1 Jdk 11.0.5
-
3.导⼊(耗费⼀定时间)
-
4.编译⼯程(顺序:core-oxm-context-beans-aspects-aop)
-
5.⼯程—>tasks—>compileTestJava
-
第1节 Spring IoC容器初始化主体流程

Spring IoC容器初始化主体流程
- 第2节 BeanFactory创建流程

BeanFactory创建流程
- 第3节 Bean创建流程

Bean创建流程
- 第4节 lazy-init 延迟加载机制原理

lazy-init 延迟加载机制原理
-
第5节 Spring IoC循环依赖问题
Spring IoC循环依赖问题
第六部分 SpringAPO高级应用
AOP本质:在不改变原有业务逻辑的情况下增强横切逻辑,横切逻辑代码往往是权限校验代码、⽇志代码、事务控制代码、性能监控代码。


-
第1节 AOP 相关术语
-
第2节 Spring中AOP的代理选择
-
第3节 Spring中AOP的配置⽅式
-
第4节 Spring中AOP实现
需求:横切逻辑代码是打印⽇志,希望把打印⽇志的逻辑织⼊到⽬标⽅法的特定位置(service层transfer
⽅法)

Spring中AOP实现
- 第5节 Spring 声明式事务的⽀持
编程式事务:在业务代码中添加事务控制代码,这样的事务控制机制就叫做编程式事务
声明式事务:通过xml或者注解配置的⽅式达到事务控制的⽬的,叫做声明式事务

Spring 声明式事务的⽀持
第七部分 SpringAPO源码深度剖析
- 第1节 代理对象创建

代理对象创建
- 第2节 Spring声明式事务控制
声明式事务很⽅便,尤其纯注解模式,仅仅⼏个注解就能控制事务了
思考:这些注解都做了什么?好神奇!
@EnableTransactionManagement @Transactional

Spring声明式事务控制
总结一下啦
今天唠叨的Spring高级源码,有整理一份《Spring高级源码笔记》以上都是在为大家介绍解释这些内容,由于记录的这份笔记有百页,所以小编在这里只能截图给大家看一部分的内容以及大概的整个框架。不过感兴趣的朋友可以来找小编免费分享完整的Spring高级源码笔记PDF文件,转发+私信我关键词 “源码” 即可~

注意啦,转发+私信我关键词 “源码” 即可~,立即回复免费下载《Spring高级源码笔记》的方式以及更多的Spring相关的学习笔记哟~

网友评论