【原】Spring源码浅析系列-导入源码到Eclipse

时间:2022-09-06 22:50:23

用了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版本编译比较稳)

【原】Spring源码浅析系列-导入源码到Eclipse

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

【原】Spring源码浅析系列-导入源码到Eclipse

      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。

【原】Spring源码浅析系列-导入源码到Eclipse

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

【原】Spring源码浅析系列-导入源码到Eclipse

 #遇到的问题:

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

  【原】Spring源码浅析系列-导入源码到Eclipse

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

【原】Spring源码浅析系列-导入源码到Eclipse

#FactoryBeanTests-withAutowiring.xml详情

【原】Spring源码浅析系列-导入源码到Eclipse

#运行后如下所示

【原】Spring源码浅析系列-导入源码到Eclipse

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本. 在实际项目中LinkedList也是使用频率非常高的一种集合,本博客将从源码角度带领大家学习关于LinkedList的知识. ...

  8. Jetty源码学习-编译Jetty源码二三事

    工作小几个月了,JDK基础和web应用框架学的的差不多了,开始学习Jetty源码,费了小半天才编译成功,把自己拆过的坑记录下来. 编译前的环境: MAVEN 3.3.Eclips eLuna Serv ...

  9. spring源码浅析——IOC

    =========================================== 原文链接: spring源码浅析--IOC   转载请注明出处! ======================= ...

随机推荐

  1. Windows Azure 服务总线和物联网

    机器到机器 (M2M) 计算正迅速成为一种技术,所有开发人员和架构师需要拥抱. 许多研究表明一个未来世界的数百亿美元的设备 (在地球上的每一个人的出现).MSDN杂志有2篇文章讨论Azure服务总线和 ...

  2. uva 12549

    12549 - Sentry Robots Time limit: 1.000 seconds We need to guard a set of points of interest using s ...

  3. bzoj 3611: [Heoi2014]大工程

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...

  4. 海贼王之&mdash&semi;&mdash&semi;梦想音乐

      相信和很多海粉一样,对伙伴的关照和战斗,是相当地震撼.   好东西时不时地听一下,然后感受那种刷新全身表层细胞,触电...:   音乐链接: http://v.youku.com/v_show/i ...

  5. AIR加载PDF

    //系统需要先安装上Adobe Reader import flash.html.HTMLLoader; import flash.html.HTMLPDFCapability; import fla ...

  6. Docker学习计划

    刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处.比如: 1.Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多 2.Docker 对系统资源的利用率很高, ...

  7. Ocelot中文文档-管理

    Ocelot支持在运行时通过一个认证的Http API修改配置.有两种方式对其验证, 使用Ocelot的内置IdentityServer(仅用于向管理API验证请求)或将管理API验证挂接到您自己的I ...

  8. &lbrack;LeetCode&rsqb; 120&period; Triangle &lowbar;Medium tag&colon; Dynamic Programming

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  9. 视频压缩和H264

    一.视频压缩 1.1 为什么需要压缩视频? 假设一个2小时未压缩的高清视频,1920×1080p的电影,我们来计算一下他的存储容量.先介绍一下帧率(frame rate或者是 FPS)概念,也就是每秒 ...

  10. Linux基础命令---zip

    zip zip是一种最通用的文件压缩方式,使用于unix.msdos.windows.OS等系统.如果在编译zip时包含bzip 2库,zip现在也支持bzip 2压缩.当将大于4GB的文件添加到存档 ...