-
JDK:1.8.0_144;
-
Maven:3.5.0;
-
IntelliJ IDEA:2018.1.5(Ultimate Edition);
全文概要
本次实战所有步骤如下:
-
下载spring-framwork源码,用IDEA打开此工程;
-
修改spring-framework中的类,添加代码;
-
编译构建spring-framework,添加到本地maven仓库;
-
基于maven创建一个新的demo,使用本地仓库的spring-framework;
-
执行demo工程验证修改的代码已经生效;
接下来开始实战吧;
下载spring-framework源码,用IDEA打开此工程
-
打开spring-framework在GitHub上的release列表,地址是:https://github.com/spring-projects/spring-framework/releases,下载4.1.8.RELEASE版本,如下图红框所示:
-
解压后,用Intellij IDEA以Gradle工程的形式导入,Gradle版本记得使用2.14.1,如下图:
修改spring-framework中的类
本次修改的类是PropertyPlaceholderHelper.java,这个类用来替换字符串中的占位符,本次修改源码的目的如下:
-
将替换前后的字符串打印出来用于对比;
-
将调用堆栈打印出来,这样我们在学习spring源码时,可以知道处理占位符的时机和位置;
对PropertyPlaceholderHelper.java的具体修改如下所示:
- 新增一个private方法,用于打印当前堆栈位置:
private void printTrack(String prefix){
StackTraceElement[] st = Thread.currentThread().getStackTrace();
if(st==null){
logger.info(“invalid stack”);
return;
}
StringBuffer sbf =new StringBuffer();
for(St