Spring源码环境搭建

Spring导入到Idea环境

前言

Spring 是一个开源的轻量级的 Java 开发框架, 具有控制反转(IoC)和面向切面(AOP)两大核心。Spring 是目前开发人员必须掌握的一项技能,因此,我们不仅要会用它,更要深入了解其原理。

《论语·魏灵公》:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”

准备

一、Spring源码下载

由于 Github 无法访问,可以从码云 Gitee 上克隆一份项目。
SpringFramework码云源码地址

二、IDEA 下载

我自己用的 IDEA2021 版,我本来用的是 2019 版的,但是将 Spring 源码导入到 IDEA 时,出现了很多问题,不得已重新下载了 IDEA2021 版的。具体什么问题,后文会具体讲解。

三、导入到 IDEA

其实在官方文档里面已经讲了该如何将 Spring 导入到 IDEA 中,官方描述如下:

  • Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
  • Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
  • When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)
  • Code away
  1. 预编译。切换到Spring源码目录下,执行Gradle命令
gradlew :spring-oxm:compileTestJava
  1. 在Spring项目目录下有个.Gradle文件,去下载对应版本的Gradle


    image
  2. 为 Gradle 配置国内镜像
    进入 Gradle 安装目录,在 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
        }
    }
}
  1. 将 Spring 导入到 IDEA中
    new->project from existsing sources 选中 build.gradle文件。
    [站外图片上传中...(image-bcb28c-1619017304274)]

四、新建demo单元测试

  • 新建一个实体类Person
package com.demo.spring.com.demo.vo;
public class Person {
    private String name;
    private String id;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
}
  • 配置xml文件


    
        
        
    

  • 添加测试类
public class IocTest {
    @Test
    public void test1(){
        System.out.println("11");
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/springdemo.xml");
        Person person = (Person) applicationContext.getBean("person");
        System.out.println(person.getName());
    }
}
  • 最终执行成功


    image

五、要解决的问题

  • aspectJ 的问题。
    Spring 引入了切面编程,所以需要下载安装 aspectJ。具体安装过程以及环境变量的配置较为简单,可自行百度,笔者不再赘述。安装完成之后,需要更改 IDEA 的编译器配置并且添加Facets指定对应项目,如下:


    image.png
  • Kotlin版本问题。
    由于我下载的Spring源码是主干的,部分Kotlin语法需要Kotlin 1.3.5版本以上才能支持,但是我最开始用的 IDEA2019的Kotlin版本太低,所以项目构建时报错。我本想在 IDEA 插件里面直接升级的,但因为网络原因无法升级,所以无奈将 IDEA 升级为 2021 版本。

  • JDK 版本问题。由于我下载的是SPring主干代码,里面有部分代码需要JDK11以上才能支持,因此需要替换升级 Jdk11。这里需要注意的是,升级 Jd k之后还要更改 IDEA 的配置,不然构建的时候还是会报错。如下图所示:


    image.png
image.png
image

总结

这次将 Spring 源码导入到 IDEA 中足足花了我几天的时间才搞好,期间遇到各种各样的问题,上网各种搜索也找不到答案,几度曾想中途放弃。但好在最后坚持做完了。这也说明了目前自己的动手能力还比较弱,以后还能努力增强自己在这方面的能力。

你可能感兴趣的:(Spring源码环境搭建)