前言:

  最近也不知道该忙些什么样的事情。便随便看看源码算了。

正文:

  (1)

  在网上下载 Spring 的源码:

  可以采用 git 方式下载 https://github.com/spring-projects/spring-framework.git

git init
git remote add origin https://github.com/spring-projects/spring-framework.git
git pull origin master 或
git clone https://github.com/spring-projects/spring-framework.git

  (2)

  Spring 源码是采用 gradle 来编译的。至于 gradle 怎么安装,请参考 gradle 的安装

  打开命令窗口,将当前目录切换到源码所在目录(像看那部分就到哪部分的目录下),执行命令 gradle cleanidea eclipse

编译成功!

  将编译后的项目,直接导入到 Eclipse 中。嗯,我很闲,直接将整个项目编译了!

  好吧,为了看源码的方便。还是一个一个子项目的导入到项目中,因为项目中会有一些的依赖关联。工程名称前面有一个感叹号,说明存在错误。查看依赖包。

  (3)

  我们先从 spring-beans 分析起。

  导入 spring-beans ,查看其依赖,导入 spring-core 和 spring-jcl

  查看Jar 包依赖,缺少cglib-repack-3.2.5.jar和spring-objenesis-repack-2.4.jar

  为什么会缺少包?以及如何解决?参考:http://blog.csdn.net/ywb201314/article/details/53836812

  ·安装GitHub下载新版的spring源码到本地
  ·下载Gradle之后通过“gradle cleanIdea eclipse”命令将spring源码转换成可导入eclipse的工程
  ·导入足够的spring工程之后,会发现spring-core下缺少cglib-repack-3.2.5.jar和spring-objenesis-repack-2.4.jar两个包

  通过阅读源码发现为了避免第三方class的冲突,spring把最新的cglib和objenesis给repack了,
  而且并没有提供这部分的代码在源码里,直接在jar包当中。

根据package-info的提示可以到http://cglib.sourceforge.net和http://objenesis.org中下载最新的两个包,
但并不符合spring框架本身的结构。

找一个 spring-core 的jar 包。(以前跑项目运行的。重新下载的。都可以。至于版本,我也不知道,看你的源码用的哪个版本吧)

比如我,将原本 maven 下载的 spring-core 架包解压。打开cmd 进入到解压目录下。执行打包命令

cd /d E:\Repository\org\springframework\spring-core\4.1.9.RELEASE\spring-c
ore-4.1.9.RELEASE

jar cvf spring-cglib-repack-3.2.5.jar org\springframework\cglib

  jar cvf spring-objenesis-repack-2.6.jar org\springframework\objenesis

将生成的jar包,导入到缺失jar包的项目中

参考:《Spring源码深度解析》

  

Spring 源码学习:day1的更多相关文章

  1. spring源码学习之路---深入AOP(终)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章和各位一起看了一下sp ...

  2. spring源码学习之路---IOC初探(二)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章当中我没有提及具体的搭 ...

  3. Spring源码学习

    Spring源码学习--ClassPathXmlApplicationContext(一) spring源码学习--FileSystemXmlApplicationContext(二) spring源 ...

  4. Spring源码学习-容器BeanFactory(四) BeanDefinition的创建-自定义标签的解析.md

    写在前面 上文Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签对Spring默认标签的解析做了详解,在xml元素的解析中,Spri ...

  5. Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签

    写在前面 上文Spring源码学习-容器BeanFactory(二) BeanDefinition的创建-解析前BeanDefinition的前置操作中Spring对XML解析后创建了对应的Docum ...

  6. Spring源码学习-容器BeanFactory(二) BeanDefinition的创建-解析前BeanDefinition的前置操作

    写在前面 上文 Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件主要讲Spring容器创建时通过XmlBeanDefinitionReader读 ...

  7. Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件

    写在前面 从大四实习至今已一年有余,作为一个程序员,一直没有用心去记录自己工作中遇到的问题,甚是惭愧,打算从今日起开始养成写博客的习惯.作为一名java开发人员,Spring是永远绕不过的话题,它的设 ...

  8. 【目录】Spring 源码学习

    [目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ...

  9. Spring 源码学习——Aop

    Spring 源码学习--Aop 什么是 AOP 以下是百度百科的解释:AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程通过预编译的方式和运行期动态代理实 ...

  10. Spring 源码学习 04:初始化容器与 DefaultListableBeanFactory

    前言 在前一篇文章:创建 IoC 容器的几种方式中,介绍了四种方式,这里以 AnnotationConfigApplicationContext 为例,跟进代码,看看 IoC 的启动流程. 入口 从 ...

随机推荐

  1. 【dedecms网站安全】如何防止dedecms网站被DDos攻击

    [dedecms网站安全]如何防止dedecms网站被DDos攻击 第一步:进入后台,系统->添加新变量变量名称:cfg_anquan_cc 变量类型:布尔(Y/N)  参数说明:是否开启防CC ...

  2. Django的使用规则

    ORM应该算是Python的一大特色,功能类似于Mybatis或hibernate,但是显示要强大更多 一:terminal下命令行的使用 1.创建一个Project django-admin sta ...

  3. GitHub 的公开演讲文化

    2013年在某个地方为GitHub 240名员工中的三分之一或一半员工做演讲. 鼓励你的员工在大会上做演讲通常被认为是一件好事.另外对于GitHub,它还是一种好的广告:和我们花钱砸在banner广告 ...

  4. .net core程序中使用微软的依赖注入框架

    我之前在博文中介绍过Asp.net core下系统自带的依赖注入框架,这个依赖框架在Microsoft.Extensions.DependencyInjection中实现,本身并不是.net core ...

  5. Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局

    一.新建android工程的时候eclipse没有生成MainActivity和layout布局 最近由于工作上的原因,开始学习Android开发,在入门的时候就遇到了不少的坑,遇到的第一个坑就是&q ...

  6. Hive总结(八)Hive数据导出三种方式

    今天我们再谈谈Hive中的三种不同的数据导出方式. 依据导出的地方不一样,将这些方式分为三种: (1).导出到本地文件系统. (2).导出到HDFS中: (3).导出到Hive的还有一个表中. 为了避 ...

  7. 用十条命令在一分钟内检查 Linux 服务器性能

    原文地址: http://www.oschina.net/news/69132/linux-performance 如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出L ...

  8. java获取文件列表,并按照目录的深度及文件名的拼音的升序排列

    java实现在线浏览zip文件及文件下载 首先用java读出目录或是zip下的所有文件 1KG_20140718_HD/Readme-说明.htm:3.00KB1KG_20140718_HD/一键GH ...

  9. OKHttpUtil工具类

    导入jar包下载链接 http://square.github.io/okhttp/ package com.common.util; import java.io.IOException; impo ...

  10. js获取浏览器版本信息整理

    一.Navigator 对象 JavaScript Navigator 对象包含了有关访问者浏览器的所有信息.接下来我们学习 Navigator 对象的两个属性. appName 保存浏览器类型 ap ...