# spring-framework-github **Repository Path**: ShoufaLiu/spring-framework-github ## Basic Information - **Project Name**: spring-framework-github - **Description**: spring-framework5 源码构建,学习源码,逐行注释代码 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: tison - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2021-08-19 - **Last Updated**: 2021-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring5最新源码构建 ## 1、下载spring-framework源码: 1. 官方地址 https://spring.io/ github地址: https://github.com/spring-projects/spring-framework 2. 因为github太慢了,加上科学上网又被封了只能上码云克隆了一份 https://gitee.com/xietingsheng/spring-framework-github ## 2、安装gradle: 1. gradle地址:https://gradle.org/ 下载解压 2. 设置gradle环境变量 GRADLE_HOME 值为解压目录 ,path添加%GRADLE_HOME%\bin 3. gradle -v 验证是否安装成功 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225337_2127f3e7_2166801.png "image-20200319224951698.png") ## 3、工程依赖下载: 1、可以看到源码目录下的有个 gradlew.bat 文件,用于下载工程依赖 2、进入目录下运行gradlew.bat,最好右键Windows PowerShell 里运行。 3、等待自动去下载依赖完毕 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225417_c51b6ffd_2166801.png "clipboard.png") ## 4、IDEA导入工程源码: ###### (非常缓慢的过程,最好科学上网) ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225436_58b30b18_2166801.png "clipboard.png") ###### 依赖级项目构建完成的样子,可进行测试编译。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225509_978433b4_2166801.png "clipboard.png") ###### 不默认选项的话编译可能会报错,最好先这样设置。这样的默认设置会导致每次调试源码运行的时候编译整个工程,所以这里我们要改成idea,等项目跑起来了在改成IDEA,这样就不要每次运行都编译 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225523_0c154f31_2166801.png "clipboard.png") !!!!!!!!!!!!!!!!!!!黄金分割线!!!!!!!!!!!!!!!!!!!! ## IDEA创建Demo工程: ###### 1、右键Spring项目 Open Module Settings ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225826_05a5c975_2166801.png "clipboard.png") ###### 2、创建Gradle项目 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225848_ebccab80_2166801.png "clipboard.png") ###### 3、跟maven差不多 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225858_b136fa43_2166801.png "clipboard.png") ###### 4、工程依赖,我研究IOC+AOP,所以我的引入如下,这里自行配置。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225910_b32894fb_2166801.png "clipboard.png") ###### 5、测试ioc功能 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0319/225919_af2e2fdc_2166801.png "clipboard.png") ###### (上面内容为本人原创,下面的内容转自网络文章) # spring源代码各个模块作用 ### 核心模块: spring-core:核心模块 依赖注入IOC和DI的最基本实现 spring-beans:Bean工厂与装配 spring-context:上下文,即IOC容器 spring-context-support:对IOC的扩展,以及IOC子容器 spring-context-indexer:类管理组件和Classpath扫描 spring-expression:表达式语句 ### 切面编程: spring-aop:面向切面编程,CGLB,JDKProxy spring-aspects:集成AspectJ,Aop应用框架 spring-instrument:动态Class Loading模块 ### 数据访问与集成: spring-jdbc:提供JDBC主要实现模块,用于简化JDBC操作 spring-tx:spring-jdbc事务管理 spring-orm:主要集成Hibernate,jpa,jdo等 spring-oxm:将java对象映射成xml数据或将xml映射为java对象 spring-jms:发送和接受消息 ### web组件: spring-web:提供了最基础的web支持,主要建立在核心容器上 spring-webmvc:实现了spring mvc的web应用 spring-websocket:主要与前端页的全双工通讯协议 spring-webflux:一个新的非阻塞函数式Reactive Web框架 报文 spring-messaging:4.0加入的模块,主要集成基础报文传送应用 测试: spring-test:测试组件 集成兼容: spring-framework-bom:解决不同模块依赖版本不同问题 spring版本命名规则 常用软件版本规则: 一般采用:x.y.z格式命名 xyz为非负数 y为偶数代表稳定版本,反之代表开发版本 x:主版本号(api的兼容性发生变化,比如修改方法参数) y:次版本号 (增加功能,不影响原有api的兼容性) z:修订号 (bug修复,不影响api的兼容性) 比如:当前版本为1.0.0 修改方法参数,影响原有api的兼容性 版本号升级为:2.0.0 新增方法,对原有api的兼容性不影响,版本号升级为:2.1.0 修复bug,改变方法内部逻辑, 版本号升级为:2.1.1 spring版本命名规则: Snapshot:快照版-不稳定,处于开发中版本 Release: 稳定版-功能相对稳定,可以对方开发但受时间限制 GA : 正式版-可广泛使用的稳定版 M:里程碑版-具有全新功能或是具有里程碑意义的版本 RC:终测版-即将作为正式版本