[02][01][01] Spring框架的前世今生

1. Spring不仅只是一个框架,已然成为一种生态

1.1 一切从Bean

[外链图片转存失败(img-Y0nSM0J4-1566808061353)(evernotecid://DE37D598-33A4-4708-800A-6D4CF841DDE2/wwwevernotecom/149352153/ENResource/p281)]

1.2 简化开发

Spring简化开发四个基本策略

  • 基于POJO的轻量级和最小侵入性编程
  • 通过依赖注入和面向接口松耦合
  • 基于切面和惯性进行声明式编程
  • 通过切面和模板减少样版式代码

1.3 AOP,DI,IOC之间的关系

[外链图片转存失败(img-bFhKfS68-1566808061354)(evernotecid://DE37D598-33A4-4708-800A-6D4CF841DDE2/wwwevernotecom/149352153/ENResource/p282)]

2. Spring5模块结构

[外链图片转存失败(img-nOAiBvWT-1566808061355)(evernotecid://DE37D598-33A4-4708-800A-6D4CF841DDE2/wwwevernotecom/149352153/ENResource/p283)]

2.1 Spring的核心模块

模块名称 主要功能
spring-core 依赖注入IOC与DI的最基本实现
spring-bean Bean工厂与Bean的装配
spring-context 定义基础的spring的context上下文即IOC容器
spring-context-support 对Spring IOC容器的扩展支持,以及IOC子容器
spring-context-indexer Spring的类管理组件和classpath扫描
spring-expression spring表达式语言

2.2 Spring的切面编程

模块名称 主要功能
spring-aop 面向切面编程的应用模块,整合Asm,CGLib,JDKProxy
spring-aspects 集成AspectJ, AOP应用框架
spring-instrument 动态Class Loading模块

2.3 Spring的数据访问与集成

模块名称 主要功能
spring-jdbc Spring提供的JDBC抽象框架的主要实现模块,用于简化Spring JDBC操作
spring-tx Spring JDBC事务控制实现模块
spring-orm 主要集成Hibernate,Java Persistence API(JPA),Java Data Object(IDO)
spring-oxm Java对象映射成XML数据,或者将XML数据映射成Java对象
spring-jms Java Messaging Service能够发送和接收消息

2.4 Spring的Web组件

模块名称 主要功能
spring-web 提供最基础的Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IOC容器
spring-webmvc 实现了Spring MVC(Model-View-Controller)的Web应用
spring-websocket 主要是与Web前端的全双工通讯的协议
spring-webflux 一个新的非阻塞函数式Reactive Web框架,可以用来建立异步的,非阻塞,事件驱动的服务

2.5 Spring的通信报文

模块名称 主要功能
spring-messaging 从Spring4开始新加入的一个模块,主要职责是为Spring框架集成一些基础的报文传送应用

2.6 Spring的集成测试

模块名称 主要功能
spring-test 主要为测试提供支持

2.7 Spring的集成兼容

模块名称 主要功能
spring-framework-bom Bill Of Materials解决Spring不同模块依赖版本不同问题

2.8 Spring各模块之间的依赖关系

[外链图片转存失败(img-1mHBnVsQ-1566808061356)(evernotecid://DE37D598-33A4-4708-800A-6D4CF841DDE2/wwwevernotecom/149352153/ENResource/p284)]

[外链图片转存失败(img-uVJ3t2u1-1566808061357)(evernotecid://DE37D598-33A4-4708-800A-6D4CF841DDE2/wwwevernotecom/149352153/ENResource/p285)]

3. Spring版本命名规则

3.1 常见的软件版本命名规则

软件 升级过程 说明
Linux Kernel 0.0.1,1.0.0,2.1.0,3.0.18 遵循X.Y.Z规则命名版本,Y位若为偶数则表示稳定版本,奇数表示开发版本
Windows Windows98, Windows2000,Windows xp, Windows 7, Windows 10 没有确定的命名规则,比较随意

3.2 语义化版本命名通行规则

序号 格式要求 说明
X 非负整数 表示主版本号(Major),当API的兼容性变化时,X需要递增
Y 非负整数 表示次版本号(Minor),当增加功能时(不影响API的兼容性),Y需递增
Z 非负整数 表示修订号(Patch),当做Bug修复时(不影响API的兼容性),Z需递增

3.3 商业软件中常见的修饰词

描述方式 说明 含义
Snapshot 快招版 尚不稳定,尚处于开发中的版本
Alpha 内部版 严重缺陷基本完成修正并通过复测,但需要完整的功能测试
Beta 测试版 相对于Alpha有很大的改进,消除了严重的错误,但还是存在一些缺陷
RC 终测版 Release Candidate(最终测试),即将作为正式版发布
Demo 演示版 只集成了正式版部分功能升级,无法升级
SP SP1 Service Pack表示升级包,在windows中见过
Release 稳定版 功能相对稳定,可以对外发布,但有时间限制
Trial 试用版 试用版仅对部分用户发行
Full Version 完整版 即正式版,已发布
Unregistered 未注册 有功能或时间限制的版本
Standard 标准版 能满足正常使用的功能的版本
Lite 精简版 只含有正式版的核心功能
Enhance 增强版 正式版,功能优化的版本
Ultimate 旗舰版 在标配版本升级体验更好的版本
Professiona 专业版 针对更高要求功能,专业性更强的使用群体发行的版本
Free 自由版 自由免费使用的版本
Upgrade 升级版 有功能增强或修复已知bug
Retail 零售版 单独发售
Cardware 共享版 公用许可证(IOS签名)
LTS 维护版 该版本需要长期维护

3.4 Spring版本命名规则

描述方式 说明 含义
Snapshot 快招版 尚不稳定,尚处于开发中的版本
Release 稳定版 功能相对稳定,可以对外发布,但有时间限制
GA 正式版 代表广泛可用的稳定版(General Availability)
M 里程碑版 Milestone具有一些全新的功能或是具有里程碑意义的版本
RC 终测版 Release Candidate(最终测试),即将作为正式版发布

4. 构建Spring5源码

4.1 环境准备

  • Spring Framework版本5.19
  • JDK版本 JDK 8 update 20 or later
  • Gradle版本5.6

4.2 构建过程

下载代码

git clone git@github.com:spring-projects/spring-framework.git
cd spring-framework

命令构建

./gradlew build

当显示Build Success就说明Spring Framework构建完成

发布了29 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/csharpqiuqiu/article/details/100080580