spring源码阅读环境搭建

2022年4月18日 744点热度 0人点赞 0条评论

文章如有错误或改进之处,欢迎留言讨论。

本文介绍使用idea搭建spring框架源码阅读环境。
注意事项:搭建之前请注意spring-framework的版本以及jdk版本的对应。(spring-framework版本与jdk版本有关系,与gradle的版本编译也有关系,其余版本请自行测试)

相关软件版本:

  • gradle 4.9
  • spring-framwork 5.0.x
  • idea 2020.1

一、安装gradle

  1. 官网下载安装包(zip格式)并解压。

  2. 配置环境变量

    • 添加系统变量GRADLE_HOME(D:\javaApp\gradle-6.7.1为我本地解压路径)

    • 编辑path环境变量,添加%GRADLE_HOME%\bin

  3. 测试是否安装成功

    在电脑cmd命令窗口,输入gradle -v

  4. 修改gradle镜像源(网络好的请无视这条)

    友情链接

二、idea配置gradle

idea中依次打开 File→Settings→Build,Execution,Deployment→Build Tools→Gradle

三、导入并构建spring-framwork源码

  1. 下载源码

    因为github的下载速度太慢,我是从码云下载的,请自行选择:

  2. 导入工程

    idea中,点击File→Open

    打开spring源码文件夹下的build.gradle文件

  3. 等待编译完成即可。

  4. 编译过程很慢很慢,我等了好几个小时,如果期间出现下载jar包下载超时,重新编译即可。

四、测试

  1. 新建测试模块,右击项目→New→Modules

  2. 添加依赖:api(project(":spring-context"))

  3. 使用xml配置加mian方法启动spring

    • 编写测试bean
      public class Hello {
      
          public void sayHello() {
              System.out.println("Hello word!");
          }
      
      }
      
    • 编写xml配置

      resources包下新增applicationContext.xml文件

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
      
          <bean id="hello" class="com.wjw.Hello"></bean>
      
      </beans>
      
    • 编写启动类MyApplication,运行mian方法测试即可

      ```java
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;

      public class MyApplication {
      public static void main(String[] args) {
      ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
      Hello hello = (Hello)ac.getBean("hello");
      hello.sayHello();
      }
      }</p></li>
      </ul>

      <p>
      ```

最后,安装过程中异常汇总

  1. 出现异常An exception occurred applying plugin request [id: 'com.gradle.build-scan', version: '1.8']

    解决方式:gradle版本过高导致,请降低版本

  2. 出现异常No such property: values for class: org.gradle.api.internal.tasks.DefaultTas

    解决方式:spring-beans.gradle文件中注释掉以下这行代码

    //注释掉这行代码
    //compileGroovy.dependsOn = compileGroovy.taskDependencies.values - "compileJava"
    
  3. 出现以下异常
    Circular dependency between the following tasks:
    :spring-beans:compileGroovy
    --- :spring-beans:compileJava
         --- :spring-beans:compileKotlin
              --- :spring-beans:compileGroovy (*)
    

    修改spring-beans.gradle文件

    //将 spring-beans.gradle 最后三行:
    //compileGroovy.dependsOn = compileGroovy.taskDependencies.values - "compileJava"
    //compileKotlin.dependsOn(compileGroovy)
    //compileKotlin.classpath += files(compileGroovy.destinationDir)
    // 替换成:
    def deps = compileGroovy.taskDependencies.immutableValues + compileGroovy.taskDependencies.mutableValues
    compileGroovy.dependsOn = deps - "compileJava"
    compileKotlin.dependsOn(compileGroovy)
    compileKotlin.classpath += files(compileGroovy.destinationDir)
    
  4. 如出现编译已正常完成,但是spring-framework源码报错,请确认jdk版本是否适配spring版本。

王谷雨

一个苟且偷生的java程序员

文章评论