前言:
最近也不知道该忙些什么样的事情。便随便看看源码算了。
正文:
(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)
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
为什么会缺少包?以及如何解决?
·安装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源码深度解析》
作者:panie
标签:core,spring,repack,jar,day1,源码,Spring,objenesis From: https://blog.51cto.com/u_15812342/5723974