用了Spring几年,平时也断断续续在项目里看过一些源码,大多都是比较模糊的,因为一旦从一个地方进去就找不到方向了,只能知道它大概是做了什么事能达到这个功能或者效果,至于细节一般没有太深入去研究。后来才知道是学习方式有误,正常的应该是从它最原始的地方下手,至于学习Spring源码原因就是因为它的方便和快捷还有颠覆了传统的开发模式。例如刚开始学Servlet要编写大量的Servlet,然后又要New不同的对象,然后又要在业务层调用JDBC,还要手动开关事务,还要处理异常等等。Spring核心就是IOC和AOP,所以接下来主要是想系列化的去研究ioc和aop在底层是如何做的。

#开发环境:

      系统:windows7.64位;jdk版本:1.7; eclipse版本:Mars Release (4.5.0); Gradle版本:gradle-2.4.1.2; Spring源码:3.2x。

#下载Spring源码

  1. 第一步肯定是需要把源码下载下来,因为是研究spring的源码,所以我是直接download到我本地;’前往github下载Spring源码(或者通过git

    clone方式下载代码,当然前提是电脑里此时已经安装了github客户端或者类似的工具),可以选择下载mater分支,或者点击Tags选择release版本。(我选的是3.2x版本,因为之前有看过网上说早的版本变动小,最主要是3.2版本编译比较稳)

    2.下载成功后打开压缩包解压到指定目录,spring核心项目都包含在里面,例如spring-core,spring-context,spring-jdbc。源码总共不会超过20M。

      3.此时并不能直接导入eclipse,因为这些项目还没进行编译,需要通过gradle进行编译后才能被eclipse所识别,所以在此之前必须安装好gradle插件,安装gradle教程可以参考网上文章,和配置maven环境一样的步骤;配置成功后通过cmd进入到指定的项目根目录下执行 gradle cleanidea eclipse(比如我想编译spring-core,我的项目位置在E:/spring/spring-core,则需要进入到E:/spring/spring-core下执行 gradle cleanidea eclipse,如果在E:/spring 这个目录下执行的话会把所有的spring模块都进行编译)。

4.编译成功后如下图所示,这时候就可以导入到eclipse。

5.直接import编译好的模块到eclipse,完整导入如下所示:

 #遇到的问题:

提示test不存在,点击项目右键->Build Path->Java Build Path,在弹框中选择Libraries,移除这些红色X的包。

  

  • 导入后虽然没报错但并不代表已经成功了,我们最终的目的是为了能让spring项目跑起来方便我们去研究一些底层的实现。这时候就需要测试一下是否能正常运行;在spring项目内部提供了大量的test方法,其中我找了一个比较感兴趣的IOC测试类,全称叫 FactoryBeanTests.java,这个类在spring-beans项目下的根录。

#FactoryBeanTests-withAutowiring.xml详情

#运行后如下所示

#最后我会把编译好的spring源码上传到oschina(速度有点慢,成功后我会贴上地址在这里)。其他人就可以直接下下来,省去编译的过程。

【原】Spring源码浅析系列-导入源码到Eclipse的更多相关文章

  1. Spring Ioc源码分析系列--Ioc源码入口分析

    Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...

  2. JAVA常用集合源码解析系列-ArrayList源码解析(基于JDK8)

    文章系作者原创,如有转载请注明出处,如有雷同,那就雷同吧~(who care!) 一.写在前面 这是源码分析计划的第一篇,博主准备把一些常用的集合源码过一遍,比如:ArrayList.HashMap及 ...

  3. Spring 源码从github导入源码到idea2016

    步骤 安装git或者github客户端 java环境JDK安装(必须是1.8) gradle下载安装(选择的最新版3.1) git clone github上spring源码 import导入proj ...

  4. Spring源码分析之——导入spring-framework源代码到Eclipse

    本人最近想要研究spring的源代码,但当要导入spring sub project到Eclipse里面去的时候遇到了不少麻烦(其实都怪自己想当然). 找到spring-framework的gitHu ...

  5. Spring Ioc源码分析系列--Ioc容器BeanFactoryPostProcessor后置处理器分析

    Spring Ioc源码分析系列--Ioc容器BeanFactoryPostProcessor后置处理器分析 前言 上一篇文章Spring Ioc源码分析系列--Ioc源码入口分析已经介绍到Ioc容器 ...

  6. Spring Ioc源码分析系列--Bean实例化过程(一)

    Spring Ioc源码分析系列--Bean实例化过程(一) 前言 上一篇文章Spring Ioc源码分析系列--Ioc容器注册BeanPostProcessor后置处理器以及事件消息处理已经完成了对 ...

  7. 【java集合框架源码剖析系列】java源码剖析之TreeMap

    注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本.本博客将从源码角度带领大家学习关于TreeMap的知识. 一TreeMap的定义: public class TreeMap&l ...

  8. 【java集合框架源码剖析系列】java源码剖析之ArrayList

    注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本. 本博客将从源码角度带领大家学习关于ArrayList的知识. 一ArrayList类的定义: public class Arr ...

  9. 【java集合框架源码剖析系列】java源码剖析之HashSet

    注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本.本博客将从源码角度带领大家学习关于HashSet的知识. 一HashSet的定义: public class HashSet&l ...

随机推荐

  1. POJ 2125 Destroying The Graph [最小割 打印方案]

    Destroying The Graph Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8311   Accepted: 2 ...

  2. Bootstrap+Vue.js 练习入门一

    一. 效果如下图所示,输入用户名和年龄,点击添加,数据会自动添加到下面的用户信息表内.当没有数据时,用户信息表显示:暂无数据……,当有数据时,显示 删除全部 按钮,这里为了方便快捷,我没有做删除按钮的 ...

  3. Getting the pixel coordinates of text or ticks in matplotlib

    The exact pixel coordinates of title, labels, legends or ticks are important information for the tra ...

  4. u-boot核心初始化

    异常向量表:异常:因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的事件.ARM Architecture Reference Manual p54页.7种异常的类型:Re ...

  5. 描述进程的PCB

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  6. Python世界里的赋值运算符

    Python赋值运算符 以下假设变量a为10,变量b为20: "=" 的作用是把右边的数值赋值给左边的变量 示例1:编程实现145893秒是几天几小时几分钟几秒钟? total = ...

  7. Mysql(三)-2:数据类型

    一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...

  8. Docker镜像的构成__docker commit

    镜像是容器的基础,每次执行docker run的时候都会制定哪个镜像作为容器运行的基础.在之前的例子中,我们所使用的都来自于Docker Hub的镜像.直接使用这些镜像是可以满足一定的需求,而当这些镜 ...

  9. 集成 solr6.5.1到 tomcat7(8) 中 (解决java.lang.NoSuchMethodError问题)

    ♣下载solr安装包 ♣安装solr ♣solr应用部署到tomcat下 ♣配置web.xml ♣在tomcat7启动 ♣改为在tomcat8启动 ♣在自带的Jetty里启动 ♣建立第一个Core 安 ...

  10. DAY2-JAVA

    2018-1-28学习笔记 1.在开发中定义类.方法时也可以先添加文档注释,再用javadoc工具生成自己的API文档.Java文档注释和java工具使用. 2.掌握查阅java JDK和API文档. ...