spring源码学习(1)-环境搭建

前言

提到源码,有种恐惧的感觉,不知道从哪开始看,该看哪些,怎么去看...

与其想这么多,先搭好源码环境,再对照B站的一些源码分析视频和spring源码分析书籍来学习。

准备环境

jdk:1.8

gradle:5.6.4

idea:2020.3.4

spring-framework:5.2.x

构建源码

前提:假设你的环境已配置完毕

导入源码

File → new → Project form Existing Sources → spring源码home目录中build.gradle

6D090F54-308A-4995-B021-DBE56EA383F8.png

修改源码gradle配置

  1. 由于gradle-5.6.4-bin.zip下载过慢,可将源码中gradle目录中wrapper/gradle-wrapper.properties中下载地址拿出来拷贝到浏览器手动下载下来,放个位置,再将gradle-wrapper.properties地址改为文件的位置,我这里就直接放在wrapper目录里


    微信截图_20210529202838.png
微信截图_20210529202859.png
  1. 加快gradle下载速度,给build.gradle和settings.gradle配置上阿里云镜像地址


    微信截图_20210529202735.png
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
微信截图_20210529203046.png
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }

编译源码

  1. 以上工作完毕后,去spring源码目录下执行gradlew.bat文件,等待完成;
  2. 打开idea,点开右侧gradle找到主要的核心依赖包依次编译:spring-core、spring-beans、spring-context、spring-oxm(如需要其他功能,可编译对应的依赖包)

测试源码

编写个demo:

  1. 右键spring源码项目添加module,选择gradle项目


    微信截图_20210529203913.png
  2. 修改新建的module目录下build.gradle文件,引入spring几个核心包和自己需要的包,并点右上角旋转按钮reload依赖


    微信截图_20210529215028.png
  3. 编写测试代码

public interface GoodsService {

    void create();
}
@Component
public class GoodsServiceImpl implements GoodsService {
    @Override
    public void create() {
        System.out.println("create one goods !");
    }
}
public class Client {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        applicationContext.scan("com.hxs.learn.service");
//        applicationContext.register(GoodsServiceImpl.class);
        applicationContext.refresh();
        GoodsService goodsService = applicationContext.getBean(GoodsService.class);
        goodsService.create();
    }

}

运行成功界面:

微信截图_20210529210037.png

注意点

  1. 下载的spring源码看看配置什么版本的gradle,和支持java的版本

踩个坑最新的main分支依赖spring源码,不支持jdk1.8。

  1. idea版本尽量新点

总结

折腾了半天,对照着网上的一些教程,才搭出环境并成功运行的demo。

首先不熟悉gradle只能copy网上的教程。

今天终于迈出第一步,即便搭建艰难,为了学习源码也是值得的!

你可能感兴趣的:(spring源码学习(1)-环境搭建)