前言

对于一门技术,我们最先是了解它(what),然后再熟练的使用它(how)以及何时用它(when),最后肯定要看透它(why)。spring作为Java开发人员可以说是最熟悉不过的了,基本每个Java的项目都会用到spring,阅读spring的源码对于一个有理想的程序员来说也是一件必干不可的事,阅读源码我们才能更好的使用它、理解它,在遇到问题的时候我们才能更好的找到问题的原因并高效的解决。

阅读源码的最好方式就是下载下来然后导入到IDE,通过编写Test代码来Debug跟踪。spring源码导入到eclipse确实要花费一点功夫,容易出错。在这里记录一下。

环境准备

1.下载spring源码

如果不知道spring在Github上的地址,我们可以借助搜索引擎,输入 "spring github"关键字,一般第一个搜索结果就是。

点进去就跳转到Github上的spring源码了,可以点击绿色的按钮【Clone or download】下载到本地

spring的Github地址:https://github.com/spring-projects/spring-framework

2.安装gradle

spring源码是通过gradle构建的,所以我们需要安装gradle,gradle下载: http://www.gradle.org/downloads ,下载后设置环境变量: GRADLE_HOME = gradle主目录 (D:\mysoft\gradle\gradle-3.5), 并在path中加入;%GRADLE_HOME%\bin;

配置完成之后,在命令行窗口输入 gradle -v,验证是否安装成功。

3.编译

① 构建spring源码

在spring源码的目录中有 import-into-eclipse.bat文件(Windows环境),我们可以直接点击,也可以进入该目录,通过命令行窗口来执行。

连续两次回车,就可以开始自动构建;

这种方式一般容易失败。我们通过另外一种方式:进入spring源码目录执行:gradle eclipse -x :eclipse,执行之后就是一大串的Download,构建时间根据网速来定,我们只需等待。

下载完后我们可以看到每个模块下多了两个文件:.classpath和.project。

② 通过eclipse的import导入Spring-framework源码目录 

在Eclipse菜单File->import选择General下面的Exsiting projects into workspace,这样就导入完成了。导入源码以后,项目会出现报错的情况,缺少两个jar包。

我们去网上找下这两个jar包,根据提示我们在模块下建立文件夹 build->libs,并将下载好的两个jar包放入到libs文件夹里面,重新Clean一下项目。

③ 安装eclipse的groovy插件

clean完之后发现项目还报错(关于groovy的,所以eclipse需要集成groovy插件),

解决:eclipse菜单栏:help -- Install new software:地址输入http://dist.springsource.org/snapshot/GRECLIPSE/e4.5/,下载完即可。

具体groovy版本和eclipse版本,参考:https://github.com/groovy/groovy-eclipse/wiki

④ 还有一个spring-oxm项目报错

需要在spring-oxm项目路径下输入命令:gradle cleanIdea :spring-oxm:compileTestJava(其实不用也行,只是测试代码报错,但是强迫症的我们不允许),下载完后,刷新该项目即可。

⑤ Groovy compiler 不匹配问题

这是groovy插件的版本不匹配,解决方法参考:Groovy compiler mismatch problem

⑥ 最后效果

4.版本说明

eclipse:eclipse 4.5 (Mars)

spring源码:

jdk:jdk 1.8

gradle:gradle 3.5

groovy eclipse plugin:e4.5

spring源码学习(一):eclipse导入spring源码的更多相关文章

  1. Eclipse导入Hadoop源码项目及编写Hadoop程序

    一 Eclipse导入Hadoop源码项目 基本步骤: 1)在Eclipse新建一个java项目[hadoop-1.2.1] 2)将Hadoop压缩包解压目录src下的core,hdfs,mapred ...

  2. eclipse导入Java源码

    eclipse导入Java源码 下载源码包(一般jdk都自带了, 我的没有) src.zip eclipse -> window -> preferences -> JAVA -&g ...

  3. Hadoop1.x目录结构及Eclipse导入Hadoop源码项目

    这是解压hadoop后,hadoop-1.2.1目录 各目录结构及说明: Eclipse导入Hadoop源码项目: 注意:如果没有ant的包可以去网上下,不是hadoop里面的. 然后如果通过以上还报 ...

  4. eclipse导入tomcat源码

    我的开发环境:windows7  64位 一.官网下载tomcat源码.在此奉上一站地址:http://archive.apache.org/dist/tomcat/: 二.编译源码生成.jar文件: ...

  5. Eclipse导入Elasticsearch源码

    Eclipse导入Elasticsearch源码的步骤, 基于Elasticsearch 6.2.2的源码版本. 1.安装JDK1.9 Elasticsearch 6.2.2需要JDK1.9编译,否则 ...

  6. Eclipse导入Zookeeper源码Version2017.11.3

    将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...

  7. eclipse导入已有源码

    http://blog.csdn.net/scruffybear/article/details/1917301 如有转载,请注明出处,并保持文章的完整性,谢谢! 最近工作之余在研究国外经典书籍< ...

  8. SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的

    系列文章目录和关于我 一丶什么是SpringBoot自动装配 SpringBoot通过SPI的机制,在我们程序员引入一些starter之后,扫描外部引用 jar 包中的META-INF/spring. ...

  9. eclipse导入Tomcat8源码

    最近这段时间在学习how tomcat works这本书,需要结合书上的例子对照tomcat源码来看,需要导入tomcat的源码,所以在网上找了很多教程,结合自己遇到的问题,记录如下: 1.前期准备 ...

随机推荐

  1. UNIX高级环境编程(8)进程环境(Process Environment)- 进程的启动和退出、内存布局、环境变量列表

    在学习进程控制相关知识之前,我们需要了解一个单进程的运行环境. 本章我们将了解一下的内容: 程序运行时,main函数是如何被调用的: 命令行参数是如何被传入到程序中的: 一个典型的内存布局是怎样的: ...

  2. CSS学习摘要-层叠和继承

    当有多个选择器作用在一个元素上时,哪个规则最终会应用到元素上? 其实这是通过层叠机制来控制的,这也和样式继承(元素从其父元素那里获得属性值)有关. 元素的最终样式可以在多个地方定义,它们以复杂的形式相 ...

  3. 铁乐学python_day18-19_面向对象编程1

    以下笔记绝大部分(百分之80或以上)摘自我的授课老师之一:老男孩教育中的景老师. 她上课讲的知识点由浅入深,引人入胜,听她的课完全不会感觉到困阿,而且不知不觉中就感觉掌握了. 她的博客是: http: ...

  4. (转)图形学理论知识 BRDF 双向反射分布函数(Bidirectional Reflectance Distribution Function)

    BRDF理论 BRDF表示的是双向反射分布函数(Bidirectional Reflectance Distribution Function),它描述了光线如何在物体表面进行反射,可以用来描述材质属 ...

  5. 五十个小技巧提高PHP执行效率

    在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...

  6. sql server 使用链接服务器连接Oracle,openquery查询数据

      对接问题描述:不知道正式库oracle数据库账户密码,对方愿意在对方的客户端上输入账号和密码,但不告诉我们 解决方案:使用一台sql server作为中间服务器,可以通过转存数据到sql serv ...

  7. UVa 11440 - Help Tomisu(欧拉函数 + 问题转换)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. 【bzoj2693】jzptab 莫比乌斯反演+线性筛

    题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...

  9. Yii安装使用教程(转)

    Yii 是一个基于组件的高性能 PHP 框架,用于快速开发大型 Web 应用.它使Web开发中的 可复用度最大化,可以显著提高你的Web应用开发速度.Yii 这个名字(读作易(Yee) 或 [ji:] ...

  10. weblogic之CVE-2017-3248,CVE-2018-2628,CVE-2018-2893,CVE-2018-3245反序列绕过分析

    说一下复现CVE-2017-3248可以参考p牛的环境,p牛的环境CVE-2018-2628实际就是CVE-2017-3248,他漏洞编号这块写错了. 攻击流程就如下图,攻击者开启JRMPListen ...