在IDEA中搭建Spring5.2.x版本源码(~附带完整过程和图示~)

363 阅读2分钟

1.开发环境


  • JDK8
  • IntelliJ IDEA 2019.1.4
  • gradle 5.6.4
  • git 2.33.0

2.操作步骤


下载并安装git


  • 进入git-scm.com/downloads,下载对应操作系统的git版本
  • 一直点击next安装即可
  • 记得配置环境变量

获取Spring源码


  • 使用clone的方式将源码拉取到本地,方便使用IDEA直接比较版本间的差异

    • 新建一个文件夹SpringFrameWork
    • 在该文件夹下打开git bash,输入以下命令:
    git clone https://github.com/spring-projects/spring-framework.git
    
    • 完成克隆后,在命令行输入:
     git checkout origin/5.2.x
    
  • 也可直接下载源码的压缩包

4.2.jpg

  • 点击code中的Download ZIP

添加阿里云镜像


  • 找到源码目录下的build.gradle文件

4.3.jpg

  • 向文件中的repositories节点下添加以下镜像:
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }

预编译spring-oxm模块


  • 在源码目录下下打开cmd命令窗口
  • 执行以下命令:
gradlew :spring-oxm:compileTestJava
  • 完成spring-oxm模块的编译后,会在源码目录生成.gradle文件夹

4.4.jpg

下载并安装gradle


  • .gradle文件夹可以查看到需要下载的版本,进入gradle.org/releases/,下载需要的版本

4.1.jpg

  • 记得配置环境变量:

    • 新增 GRADLE_HOME 环境变量,指向gradle-5.6.4-bin.zip解压目录
    • 在Path环境变量新增 %GRADLE_HOME%\bin
  • 在cmd中输入以下命令gradle -v检查是否安装成功

为Gradle配置镜像


  • 进入gradle-5.6.4-bin.zip解压后的目录,在init.d目录下新建init.gradle文件
  • 添加以下内容:
allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            def url = repo.url.toString()
            if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                remove repo
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

将代码导入到IDEA中


  • 选择IDEA的Import Project

  • 选择导入Gradle项目(先确保在IDEA中已经开启Gradle插件,要不然下图不会显示Gradle)

4.5.jpg

  • 在导入前进行配置

4.6.jpg

  • 点击Finish,等待IDEA构建完项目

  • 将分支切换到5.2.x

4.7.jpg

构建整个项目


  • 在IDEA中选择Build->Build Project(本机在构建过程很顺利,但是在测试时还是报了关于AspectJ的错误,所以还是要进行下面的步骤)

4.8.jpg

  • 下载并安装aspectj

    • aspectj-1.9.5.jar所在的文件夹打开cmd命令行,运行java -jar aspectj-1.9.4.jar
    • 在安装界面中点击Next(注意自定义aspectj-1.9.5.jar安装的路径并选择JDK所在的路径)
  • IDEA中配置aspectj

    • 确保插件Spring AOP/@AspectJAspectJ Support已被激活

4.9.jpg

  • 将编译器改为Ajc

4.10.jpg

  • 指定需要使用Ajc编译的项目

4.11.jpg

4.12.jpg

  • 再次选择Build->Build Project

3.测试


创建模块


4.13.jpg

4.14.jpg

添加必要的依赖


4.15.jpg

compile(project(":spring-context"))
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-aop"))
optional("org.aspectj:aspectjweaver")

编写测试代码


// 下面代码都是自定义模块中的
// 实体类User
public class User {
	private Integer id;
	private String userName;
    // 下面就是setter、getter、toString和构造器,此处省略
}

// 注解的方式声明bean
@Configuration
@Component
public class JavaConfig {
	@Bean
	public User user(){
		return new User(1, "psj");
	}
}

// 测试类
public class Test {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
		User user = (User) context.getBean("user");
		System.out.println(user.toString());  // 可以成功输出就OK了!!!
	}
}

4.参考


daimingzhi.blog.csdn.net/article/det…

www.bilibili.com/video/BV1w9…