源码构建

1.下载

  • spring-jcl:spring 封装的日志框架。
  • spring-core:spring 核心依赖,包含 Spring 框架基本的核心工具类, Spring 的其他纽件都要用到这个包里的类, Core 模块是其他纽件的基本核心,引入该依赖会同时引入spring-core、spring-jcl
  • spring-beans:所有应用都要用到的,包含访问配直文件、创建和管理 bean 以及进行 IOC/DI 操作相关的所有类
  • spring-context:Context 模块构建于 Core Beans 模块基础之上,提供了一种类似于 JNDI 注册器的框架式的对象访问方法。Context 模块继承了 Beans 的特性,为 Spring 核心提供了大量扩展,添加了对国际化 (例如资源绑定)、事件传播、资源加载、定时任务和对 Context 透明创建的支持。Context 模块同时也支持 J2EE 的一些特性, 例如 EJB 、JMX 和基础的远程处理。ApplicationContext 接口是 Context 模块的关键。
  • spring-jdbc:spring 对 jdbc 的封装,并提供了编程式事务控制,引入该依赖会同时引入spring-jdbc、spring-tx
  • spring-tx:spring 提供的声明式事务控制,包含 @Transaction 声明式事务注解
  • spring-web:spring 的 web 框架,引入该依赖会同时引入spring-beans、spring-core、spring-jcl、spring-web
  • spring-webmvc:springmvc 框架,是 web 的一个实现,引入该依赖会同时引入spring-aop、spring-beans、spring-context、spring-core、spring-expression、spring-jcl、spring-web、spring-webmvc,做一般的 web 开发可以直接引入该依赖即可,不必引入其他 spring 依赖。

2.构建

  • Spring5 以后采用 Gradle 来编译,因此构建源码前先安装 Gradle 环境。这里使用 IDEA2020.1.3 版本打开工程后,IDEA 会自动下载对应 Gradle4.3.1 版本的zip包,并自行开始构建,Gradle 版本可以在源码根目录下的 build.gradle 文件找到 gradleVersion = 4.3.1 配置。通常会出现两个问题:
  • integration-0.9.15.pom 找不到:在 build.gradle 文件中,将 id "org.jetbrains.dokka" version "0.9.15" 其版本 0.9.15 修改为 0.9.17 即可。
  • 多种依赖找不到:找到 build.gradle 文件中的 repositories,在第一行添加如下:
repositories {
    maven { url "http://maven.aliyun.com/nexus/content/groups/public"}  //添加阿里云环境
    maven { url "https://repo.spring.io/libs-release" }
    maven { url "https://repo.spring.io/milestone" }  // for AspectJ 1.9 beta
}