spring ioc 架构图_Spring 源码学习(一 )模块理解和源码构建

Spring 前世今生

一切从Bean开始

dae4998c5bccc9f1f1bfcec7db3cb9d4.png

Spring 初衷

spring是一个轻量的控制反转和面向切面的容器框架。spring是为解决企业级应用开发的复杂性而设计的。它的根本目的是:简化开发,spring立志于全方面简化java的开发。主要通过4种策略,3种方式实现。

  • 4种策略:
  1. 基于POJO的轻量级和最小侵入式编程
  2. 通过依赖注入和接口编程解耦合
  3. 基于切面和惯性进行声明式编程
  4. 通过切面和模板减少板式代码
  • 3种方式:面向Bean编程(BOP)、依赖注入(DI)、面向切面编程(AOP)。

面向Bean编程(Bean Oriented Programming):Spring 是面向 Bean 的编程,Bean 在 Spring 中才是真正的主角。SpringIOC 容器,负责创建、配置和管理Bean,并维护各种Bean对象之间的依赖关系。

依赖注入(Dependency Injection):容器自动装配Bean对象时,会把有依赖关系的对象通过属性或构造函数传递过来。

IOC(Inversion of Control)即控制反转是指由容器控制业务对象之间的依赖关系,而非代码直接控制。好处实现了解耦,降低了业务对象之间的依赖。IOC在spring中有两种实现策略,依赖注入DI和依赖查找DL(DL因为不常用,Spring后来将它移除),所以Spring中的IOC也称为DI。Spring 设计的核心是org.springframework. beans 包(架构核心是 org.springframework.core包),它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系,它实现了IOC的模式BeanFactory 支持两个对象模型:

1,单例模型(singleton):提供了具有特定名称的全局共享实例对象,可以在查询时对其进行检索。singleton是默认的也是最常用的对象模型。

2,原型模型(prototype):确保每次检索都会创建单独的实例对象。在每个用户都需要自己的对象时,原型模型最合适。

Bean 工厂的概念是 Spring 作为 IOC 容器的基础。IOC 则将处理事情的责任从应用程序代码转移到框架。

面向切面编程(Aspect Oriented Programming):面向切面编程是一种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想。AOP 的核心构造是方面(切面),它将那些影响多个类的行为封装到可重用的模块中。

切面(Aspect):通常是一个类(实现了某些共有功能),里面可以定义切入点和通知。

连接点(JoinPoint):就是程序在运行过程中能够插入切面的地点,一般是方法调用

通知(Advice)):在特定的切入点上执行的增强处理,是切面的具体实现。可分为前置通知(Before)、后置通知(AfterReturning)、异常通知(AfterThrowing)、最终通知(After)与环绕通知(Around)5种。实际应用中通常是切面类中的一个方法。

切入点(PointCut):就是带有通知的连接点,在程序中主要体现为书写切入点表达式AOP 框架创建的对象,实际就是使用代理对目标对象功能增强。Spring 中的 AOP 代理可以使是JDK 动态代理,也可以是 CGLIB 代理,前者基于接口,后者基于子类

AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。

AOP 编程的常用场景有:Authentication(权限认证)、Auto Caching(自动缓存处理)、Error Handling(统一错误处理)、Debugging(调试信息输出)、Logging(日志记录)、Transactions(事务处理)等。


Spring基本架构、模块说明和模块依赖关系

spring模块架构图

77cfff9d12d6ce5285cfff3d9c7d4a52.png
spring 官网提供的模块架构图

spring模块功能说明

78c5690f2d439dae8a3a62d0baa0621f.png

spring模块依赖关系

192c04896676786c76c5f191f7ac0d4c.png

spring源码构建

操作系统win10

第一步从GitHub下载相应版本的spring源码,这里以5.0.2.RELEASE为例。下载地址

https://github.com/spring-projects/spring-framework/tree/v5.0.2.RELEASE

第二步下载安装对应版本的gradle,在解压后的源码build.gradle文件搜索gradleVersion可以获取spring对应的gradle版本,v5.0.2.RELEASE对应的gradle版本是4.3.1

9a808c4ce2ab3a82f6a9a15982e077e3.png

下载地址https://gradle.org/next-steps/?version=4.3.1&format=all

第三步配置gradle环境变量

1.配置GRADLE_HOME

b162e36c095cee22c57307c77fc769c7.png

2.配置path

e8df57c21b0945d6ac84e65385c35fad.png

3.测试gradle是否配置成功,配置成功输入gradle -v会显示版本信息,如下图

13773c20b1700e560d85310292f862b6.png

第四步,命令行进入到spring源码解压文件,运行gradle,构建成功会出现 BUILD SUCCESSFUL信息(如果失败可重新运行gradle,一般是网络问题),如下图所示

efc9db5e687417d23f7db39663dfc303.png

第五步,打开IntelliJ IDEA,选择import Project

1.导入项目

424db13fa9b4e25a242d28e9dff67513.png

2.选择gradle

0aca51c6f03f1390c82c28545bdbf300.png
选择Gradle

3.勾上圈起来的地方

caa309b70df84bfae8b4220da5e5e41b.png

4.等待构建

c04fc01a7ee8ab2140eca484aeb03f18.png
等待构建完成

5.验证构建完成

IDEA构建完成 [spring-build-src]会变粗。还有一种验证方式是:找到 ApplicationContext 类,按 Ctrl + Shift + Alt + U,出现类图界面说明构建成功。如下图所示

1d23426e2f777ae2b2f4c5dd221946ea.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值