Spring 源码学习:day1
前言:
最近也不知道该忙些什么样的事情。便随便看看源码算了。
正文:
(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的更多相关文章
- spring源码学习之路---深入AOP(终)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章和各位一起看了一下sp ...
- spring源码学习之路---IOC初探(二)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章当中我没有提及具体的搭 ...
- Spring源码学习
Spring源码学习--ClassPathXmlApplicationContext(一) spring源码学习--FileSystemXmlApplicationContext(二) spring源 ...
- Spring源码学习-容器BeanFactory(四) BeanDefinition的创建-自定义标签的解析.md
写在前面 上文Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签对Spring默认标签的解析做了详解,在xml元素的解析中,Spri ...
- Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签
写在前面 上文Spring源码学习-容器BeanFactory(二) BeanDefinition的创建-解析前BeanDefinition的前置操作中Spring对XML解析后创建了对应的Docum ...
- Spring源码学习-容器BeanFactory(二) BeanDefinition的创建-解析前BeanDefinition的前置操作
写在前面 上文 Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件主要讲Spring容器创建时通过XmlBeanDefinitionReader读 ...
- Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件
写在前面 从大四实习至今已一年有余,作为一个程序员,一直没有用心去记录自己工作中遇到的问题,甚是惭愧,打算从今日起开始养成写博客的习惯.作为一名java开发人员,Spring是永远绕不过的话题,它的设 ...
- 【目录】Spring 源码学习
[目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ...
- Spring 源码学习——Aop
Spring 源码学习--Aop 什么是 AOP 以下是百度百科的解释:AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程通过预编译的方式和运行期动态代理实 ...
- Spring 源码学习 04:初始化容器与 DefaultListableBeanFactory
前言 在前一篇文章:创建 IoC 容器的几种方式中,介绍了四种方式,这里以 AnnotationConfigApplicationContext 为例,跟进代码,看看 IoC 的启动流程. 入口 从 ...
随机推荐
- unity 判断物体是否在视角内(巧妙!)
public var isRendering:boolean=false; private var lastTime:float=0; private var curtTime:float=0; fu ...
- epoll惊群原因分析
考虑如下情况(实际一般不会做,这里只是举个例子): 在主线程中创建一个socket.绑定到本地端口并监听 在主线程中创建一个epoll实例(epoll_create(2)) 将监听socket添加到e ...
- 用vue的自定义组件写了一个拖拽 组件,局部的 只能在自定义元素内的
简单实现 没有做兼容<!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- bat遍历目录
方法一: for /r D:\要遍历的目录\ %%i (*.exe) do ( echo %%i ) 方法二: set DestPath=D:\你的目录\ rem 你的后缀 set Dest ...
- oracle的start with connect by prior如何使用
oracle的start with connect by prior是根据条件递归查询"树",分为四种使用情况: 第一种:start with 子节点ID='...' connec ...
- BTrace使用简介
很多时候在online的应用出现问题时,很多时候我们需要知道更多的程序的运行细节,但又不可能在开发的时候就把程序中所有的运行细节都打印到日志上,通常这个时候能采取的就是修改代码,重新部署,然后再观察, ...
- HTML:Browser 对象
ylbtech-HTML:Browser 对象 1.返回顶部 1. Window 对象 Window 对象表示浏览器中打开的窗口. 如果文档包含框架(frame 或 iframe 标签),浏览器会为 ...
- MySQL实用工具汇总
本文收录了mysql相关的实用工具.工具包括:性能测试,状态分析,SQL路由,及运维开发相关的所有工具,并会持续更新. 1.工具套件集 - percona-toolkit - oak-toolkit ...
- [Android]_[0基础]_[adb 有用命令]
场景: 1. ADB 作为pc端和手机端通讯的桥梁, 起到调试手机app,查看手机信息的重要作用. 2. 这里列举了一些比較有用的命令方便速查. 查看开启USB调试的设备列表: adb devices ...
- 未能找到temp\select2.cur的一部分
环境 操作系统:win10 家庭普通版本 x64 账户类型:管理员 SuperMap:9D 打开自定义的应用程序时,会报错:未能找到路径"C:\Users\user\AppData\Loca ...