Spring最新源码编译

准备工作

本示例基于 SpringV5.2.7RELEASE+GradleWapper+jdk1.8.0_131编译

环境准备

      • maven
      • jdk8+
      • idea

源码下载

Spring的源码是发布在github上面的

    1. 下载最新版发布版源码

不要太纠结版本区别,无需刻意保证跟老师一样的版本,只要5.x的正式发布(RELEASE)版本就行, 因为Spring中Ioc AOP核心分支是不会有变化的, 变的只有微小的细节。

稍微介绍版本代号

M:

M1,M2,…中的M是milestone的简写,意思是里程碑,代表着有重大改进的版本。

构建工具准备:

安装源码对应的gradle版本(也可不安装),建议使用gradleWraper中的gradle。

Gadle介绍:

Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。

Gradle Wrapper的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。Gradle Wrapper是Gradle项目的一部分。

Gradle无需花时间去深入学习,因为我们在学习源码的过程不会过多涉及到gradle,当然有兴趣可以去学习, 相当于后起之秀,但是maven已经够优秀了,暂时应该也没有办法替代maven。

gradleWraper在该文件中有体现,相当于远程自动下载gradle到本地(所以你可以下载gradle,也可以不下,因为可以使用gradleWraper远程的统一版本):spring-framework-5.2.7.RELEASE\gradle\wrapper\gradle-wrapper.properties

所以如果你需要下载也最好下载该链接对应的gradle版本

修改build.gradle

这个文件就相当于我们Maven的pom.xml 管理项目的依赖等信息...

设置镜像

repositories { maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'} maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'} mavenCentral() maven { url "https://repo.spring.io/libs-spring-framework-build" } }

编译工作

按照官网的方式编译:

使用gradlew(gradle-wrapper命令) 先编译oxm:compileTest Java: Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava

  1. 编译compileTestJava模块

打开源码所在文件夹,在windows cmd命令中输入,在windows中当前目录无需输入“./”。

gradlew :spring-oxm:compileTestJava

配置了镜像很快(一两分钟)就能编译完成, 如果要很久说明你的镜像没起作用,如果编译异常请自行百度,每个人的电脑及环境产生的异常都有可能。

常见问题:

1.下载plugin出现401没有权限:

解决办法:

方案1(没有亲测). 把对应报错的plugin注释掉: 打开build.gradle--->plugins节点:

方案2(亲测有效):

  1. 将报错的插件去 阿里云仓库中按名字进行搜索, 如果1个都没搜到那还是采用方案1吧
  2. 如果搜到了开源看到是来自于gradle.plugin或jcenter仓库,并且版本只有0.0.4,没有0.0.2
    1. 那这里就要改2个地方:1修改plugin下载镜像 2.修改plugin对应的版本
  1. 将gradle.plugin或jcenter仓库的镜像地址加入到settings.gradle
    1. 加入到settings.gradle
  1. 修改plugin对应的版本:

2.出现:Language version 1.1 is no longer supported; please, use version 1.3 or greater.

出现这个问题, 应该是kotlin编译版本: 你的idea 版本太新,项目版本太老: idea版本和kotlin版本有关系。

解决方案:

1. 降低idea版本, 可以使用2019

2. 提升项目kotlin版本:

3.出现下载不到或找不到:com.google.code.sfindbugs:jsr305:3.0.2

解决方案:

看到域名就知道, 要翻墙!!。

  1. 导入项目到idea中

导入项目到idea中:Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)

将项目导入到idea中提示配置gradle,按照如下配置

导入后等待编译,莫急,需要一点点时间,编译完成:

  1. 添加测试模块代码:

添加测试代码:Code away

new->model->gradle-->输入模块名称

编写代码测试ioc功能

  1. 添加依赖
dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' compile(project(":spring-context")) }

compile(project(":spring-context")) 代表本项目的
  1. 随意添加任意bean:
package cn.tulingxueyuan.beans; importorg.springframework.stereotype.Service; 
@Service public class UserServiceImpl {
 public void sayHi(){ 
System.out.println("Hello Spring!");
 } }
  1. 添加启动配置类:
import cn.tulingxueyuan.beans.UserServiceImpl; 
import javafx.application.Application; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 

@Configuration 
@ComponentScan("cn.tulingxueyuan")
 public class MainStat { 
public static void main(String[] args) { 
ApplicationContext context=new AnnotationConfigApplicationContext(MainStat.class); 
UserServiceImpl bean = context.getBean(UserServiceImpl.class); bean.sayHi(); 
} }

​​​​​​​

  1. 正确输出,大功告成!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值