spring源码阅读环境搭建

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

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

相关软件版本:

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

一、安装gradle

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

    https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled.png

  2. 配置环境变量

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

      https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%201.png

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

      https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%202.png

  3. 测试是否安装成功

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

    https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%203.png

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

    友情链接

二、idea配置gradle

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

https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%204.png

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

  1. 下载源码

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

  2. 导入工程

    idea中,点击File→Open

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

  3. 等待编译完成即可。

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

    https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%205.png

四、测试

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

    https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%206.png

    https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%207.png

    https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/Untitled%208.png

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

    https://gitee.com/wang-guyu/blog-img/raw/master/spring/source-blog/QQ%E6%88%AA%E5%9B%BE20201221173124.png

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

    • 编写测试bean

      package com.wjw;
      
      /**
       * @author wjw
       * @description: TODO
       * @title: Hello
       * @date 2020/12/18 21:50
       */
      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方法测试即可

      package com.wjw;
      
      /**
       * @author wjw
       * @description: TODO
       * @title: MyApplication
       * @date 2020/12/18 21:49
       */
      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();
      	}
      
      }
      

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

  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版本。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值