1、Bean的发展
Java Bean --> EJB --> POJO
JavaBean是Applet Bean演变而来
EJB: Enterprise Java Beans (已经成为历史)
POJO: Plain Ordinary Java Object 简单的JavaBean
2、为什么要使用Spring (简化开发)
如果不用Spring,怎么开发项目: Servlet + Jsp
Spring 简化开发四个基本策略
1) 基于POJO的轻量级和最小侵入性编程
2) 通过依赖注入(DI)和面向接口松耦合
3) 基于切面(AOP)和惯性进行声明式编程
4) 通过切面 (AOP)和模板减少样板代码
DI和AOP依赖于IOC
3、Spring 5 模块结构图
Spring不仅是一个框架,已然成为一种生态。
Spring Framework 5 Runtime
1) Spring的核心模块 Core Container
模块名称 | 主要功能 |
spring-core | 依赖注入IOC和DI的基本实现 |
spring-beans | Bean工厂与Bean的装配 |
spring-context | 定义基础的Spring的Context上下文 即IOC容器 |
spring-context-support | 对Spring IOC容器的扩展支持,以及IOC子容器 |
spring-context-indexer | Spring的类管理组件和Classpath扫描 |
spring-expression | Spring表达式语言 |
2) Spring之切面面层
模块名称 | 主要功能 |
spring-aop | 面向切面编程的应用模块,整合Asm,CGLib,JDKProxy |
spring-aspects | 集成AspectJ(AOP应用框架) |
spring-instrument | 动态Class Loading模块 |
3) Spring之数据访问
模块名称 | 主要功能 |
spring-jdbc | Spring提供的JDBC抽象框架的主要实现模块,用于简化JDBC操作 |
spring-tx | Spring JDBC事务控制实现模块 |
spring-orm | 主要集成Hibernate,Java Persistence API(JPA) 和Java Data Objects (JDO) |
spring-oxm | 将java对象映射成XML数据,或者将XML数据映射成java对象 |
spring-jms | Java Message Service 能够发送和接收信息 |
4) Spring之Web组件
模块名称 | 主要功能 |
spring-web | 提供了最基础的Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IOC容器 |
spring-webmvc | 实现了Spring MVC(model-view-Controller)的web应用。如Controller,RequestMapping等 |
spring-websocket | 主要与Web前端实现的全双工通讯的协议 |
spring-webflux | 一个新的非阻塞函数式Reactive Web框架,可以用来建立异步的,非阻塞,事件驱动的服务。 |
5) Spring 之通信报文
模块名称 | 主要功能 |
spring-message | 从Spring4开始新加入的一个模块,主要职责是为Spring框架集成一些基础的报文传送应用。 |
6) Spring 之集成测试
模块名称 | 主要功能 |
spring-test | 主要为测试提供支持 |
7) Spring 之集成兼容
模块名称 | 主要功能 |
spring-framework | Bill of Materials。 解决Spring的不同模块依赖版本不同问题。 |
Spring各个模块的依赖关系
4、源码构建
1) 安装gradle
这里的版本为gradle4.0
2) 下载Spring源码
这里下载的版本是spring-framework-5.0.2.RELEASE
cd D:BaiduNetdiskDownloadSpringspring-framework-5.0.2.RELEASE
执行 gradlew.bat
如下图所示,说明构建成功
3) 使用IDEA打开
开始导入工程,File->import project->选中spring-framework工程->import from external model->Gradle->finish经过一段时间项目导入成功
选择Import Project
选择Gradle
打开的路径如下图所示