java架构师阿松 潜水
  • 1发帖数
  • 1主题数
  • 0关注数
  • 0粉丝
开启左侧

spring源码笔记!从入门到源码讲解,让你真正读懂看懂源码

[复制链接]
java架构师阿松 发表于 2021-1-5 15:54:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
本篇主要内容


  • Spring 概述(根本情况)
  • 核思想 IoC 和 AOP
  • 写实现 IoC 和 AOP(定义spring框架)
  • Spring IoC 级应
  • 基础知识
  • 级特性
  • Spring IoC 源码深度剖析
  • 设计常优雅
  • 设计模式
  • 注意:原则、法和本事
  • Spring AOP 级应
  • 声明式事件控制
  • Spring AOP 源码深度剖析
  • 须要的条记、须要的图、通俗易懂的语化解知识难点
Spring 概述

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


  • 1997年 IBM 提出了EJB的思想;
  • 1998年,SUN 制定开辟尺度规范EJB1.0;
  • 1999年,EJB 1.1发布;
  • 2001年,EJB 2.0发布;
  • 2003年,EJB 2.1发布;
  • 2006年,EJB 3.0发布;
  • 2017 年 9 份发布了 Spring 的最新版本 Spring 5.0 通版(GA)
Spring 的优势


  • 便解耦,简化开辟
  • AOP编程的持
  • 声明式事件的持
  • 便步伐的测试
  • 便集成各种良好框架
  • 降低JavaEE API的使难度
  • 源码是经典的 Java 学习范例
Spring 的核布局

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

                               
登录/注册后可看大图


  • Spring核容器(Core Container) 容器是Spring框架最核的部分,它管理着Spring应中bean的创建、配置和管理。在该模块中,包罗了Spring bean,它为Spring提供了DI的功能。基于bean,我们还会发现有多种Spring应上下的实现。全部的Spring模块都构建于核容器之上。
  • 向切编程(AOP)/Aspects Spring对向切编程提供了丰富的持。这个模块是Spring应体系中开辟切的基础,与DI样,AOP可以帮助应对象解耦。
  • 数据访问与集成(Data Access/Integration)Spring的JDBC和DAO模块封装了量样板代码,这样可以使得数据库代码变得轻便,也可以更专注于我们的业务,还可以避免数据库资源释放失败引起的问题。 另外,Spring AOP为数据访问提供了事件管理服务,同时Spring还对ORM进了集成,如Hibernate、MyBatis等。该模块由JDBC、Transactions、ORM、OXM 和 JMS 等模块组成。
  • Web 该模块提供了SpringMVC框架给Web应,还提供了多种构建和别的应交互的远程调案。 SpringMVC框架在Web层提升了应的松耦合平。
  • Test 为了使得开辟者能够很便的进测试,Spring提供了测试模块以致于Spring应的测试。 通过该模块,Spring为使Servlet、JNDI等编写单元测试提供了系列的mock对象实现。
什么是IoC?


  • IoC Inversion of Control (控制反转/反转控制),注意它是个技能思想,不是个技能实现描述的事情:Java开辟领域对象的创建,管理的问题
  • 传统开辟式:如类A依赖于类B,通常会在类A中new个B的对象
  • IoC思想下开辟式:我们不去new对象了,是由IoC容器(Spring框架)去帮助我们实例化对象并且管理它,我们需要使哪个对象,去问IoC容器要即可我们丧失了个权利(创建、管理对象的权利),得到了个福利(不考虑对象的创建、管理等系列事情)
为什么叫做控制反转?


  • 控制:指的是对象创建(实例化、管理)的权利
  • 反转:控制权交给外部环境了(spring框架、IoC容器)
IoC解决了什么问题


  • IoC解决对象之间的耦合问题
IoC和DI的区别


  • DI:Dependancy Injection(依赖注)
    怎么理解:
  • IOC和DI描述的是同件事情,只不过度不样罢了
什么是AOP


  • AOP: Aspect oriented Programming 向切编程/向编程
  • AOP是OOP的延续,从OOP提及
  • OOP三特征:封装、继承和多态
  • oop是种垂直继承体系
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配置中,也和IoC配置样,持3类配置式。
  • 第类:使XML配置
  • 第类:使XML+注解组合配置
  • 第三类:使纯注解配置
Spring中AOP实现

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

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

                               
登录/注册后可看大图

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

                               
登录/注册后可看大图
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城