创意电子

标题: spring源码笔记!从入门到源码讲解,让你真正读懂看懂源码 [打印本页]

作者: java架构师阿松    时间: 2021-1-5 15:54
标题: spring源码笔记!从入门到源码讲解,让你真正读懂看懂源码
本篇主要内容

Spring 概述

Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了显现层 SpringMVC 和业务层事件管理等众多的企业级应技能,还能整合开源世界众多著名的第三框架和类库,已经成为使最多的 Java EE 企业应开源框架。
Spring 发展历程

Spring 的优势

Spring 的核布局

Spring是个分层常清晰并且依赖关系、职责定位常明确的轻量级框架,主要包罗个模块:数据处理模块、Web模块、AOP(Aspect Oriented Programming)/Aspects模块、Core Container模块和 Test 模块,如下图所示,Spring依靠这些根本模块,实现了个令愉悦的融合了现有解决案的零侵的轻量级框架。

                               
登录/注册后可看大图

什么是IoC?

为什么叫做控制反转?

IoC解决了什么问题

IoC和DI的区别

什么是AOP

AOP在解决什么问题

在不改变原有业务逻辑情况下,加强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复
为什么叫做向切编程

Spring IOC源码深度剖析

好处:

提造就代码架构思维、深理解框架
原则

定焦原则:抓主线
宏观原则:站在上帝视,关注源码布局和业务流程(淡化具体某代码的编写细节)
读源码的法和本事

断点(观察调栈)
反调(Find Usages)
经验(spring框架中doXXX,做具体处理的地)
Spring源码构建

下载源码(github)
安装gradle 5.6.3(类似于maven) Idea 2019.1 Jdk 11.0.5
导(耗费定时间)
编译程(顺序:core-oxm-context-beans-aspects-aop)
程—>tasks—>compileTestJava
Spring IoC的容器体系

IoC容器是Spring的核模块,是抽象了对象管理、依赖关系管理的框架解决案。Spring 提供了很多的容器,其中 BeanFactory 是顶层容器(根容器),不能被实例化,它定义了全部 IoC 容器 必须服从的套原则,具体的容器实现可以增长额外的功能,如我们常到的ApplicationContext,其下更具体的实现如 ClassPathXmlApplicationContext 包含了剖析 xml 等系列的内容,AnnotationConfigApplicationContext 则是包含了注解剖析等系列的内容。Spring IoC 容器继承体系常聪明,需要使哪个层次哪个层次即可,不必使功能全的。BeanFactory 顶级接法栈如下

                               
登录/注册后可看大图


BeanFactory 容器继承体系

                               
登录/注册后可看大图

Spring AOP 应

在讲解AOP术语之前,我们先来看下下这两张图,它们就是第三部分案例需求的扩展(针对这些扩展的需求,我们只进分析,在此基础上去进步回首AOP,不进实现)

                               
登录/注册后可看大图


上图描述的就是未采AOP思想设计的步伐,当我们红框中圈定的法时,会带来量的重复劳动。步伐中充斥着量的重复代码,使我们步伐的独性很差。下图中是采了AOP思想设计的步伐,它把红框部分的代码抽取出来的同时,运动态代理技能,在运期对需要使的业务逻辑法进加强。

                               
登录/注册后可看大图

AOP 术语


                               
登录/注册后可看大图

Spring中AOP的代理选择

Spring 实现AOP思想使的是动态代理技能
默认情况下,Spring会根据被代理对象是否实现接来选择使JDK还是CGLIB。当被代理对象没有实现任何接时,Spring会选择CGLIB。当被代理对象实现了接,Spring会选择JDK官的代理技能,不过我们可以通过配置的式,让Spring强制使CGLIB。
Spring中AOP的配置式

Spring中AOP实现

需求:横切逻辑代码是打印志,希望把打印志的逻辑织到标法的特定位置(service层transfer法)
总结

感谢你看到这里,文章有什么不足还请指正,觉得文章对你有帮助的话记得给我点个赞!
由于篇幅原因只能画出这些重点先讲一下,这一整套条记我已经整理成了PDF文档,具体如下:

                               
登录/注册后可看大图

资料获取方式:转发和批评这篇文章,然后关注小编,后台私信【java】即可打包带走全部资料~

                               
登录/注册后可看大图





欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4