Spring源码的下载、编译、构造及应用

文章概述

大家好,今天给大家带来的是Spring源码的下载,以及如何修改让其能够处理特定的业务需求,作者希望本文能为正在学习、使用Spring框架的Coder们提供帮助!

Spring源码下载

Spring框架是一个opensource,即开源的框架,它的仓库已经从svn上迁移到github,无论你是否使用过git,你都可以将Spring框架源码下载到本地。以下就是源码的仓库地址。

https://github.com/spring-projects/spring-framework

1.访问该链接,会有如下的界面,这个时候要注意,Spring框架的版本已经来到了5.X,而4.3.X之后整个框架已经足够完善了,因此,建议下载4.3.x到5.X的版本,对于没有使用过git的coder们来讲,可能你并不知道在哪里可以选择版本,看下图:其中的releases里面就可以选择版本。

将源码下载到本地之后,若是对于学习者来说,已经能够满足Spring的源码学习需求了。

Gradle工具的下载及配置

如果需要对Spring源码进行修改以适用自己的业务需求,又或者在学习的过程中,想通过修改源码来测试Spring的内容,那么你就需要下载Gradle工具。先附上Gradle的下载链接:

https://services.gradle.org/distributions/

作者下载的是3.2版本。

Gradle的配置和许多工具一样,同样是设置环境变量。在这里插入图片描述
在系统环境变量中添加GRADLE_HOME,将变量的值指向gradle的安装目录。
再在系统变量Path中添加 %GRADLE_HOME%\bin 即可。运行命令行,输入gradle -version ,显示如下界面即安装配置成功:
在这里插入图片描述
在这个界面,我们可以看到jvm为1.8,作者建议大伙们也采用java8,因为4.X版本后都是基于java8稳定版本开发,而gradle对java8的兼容性也比较好。

利用Gradle构造Spring项目

根据Spring官方给出的建议,利用Gradle可以将Spring项目够造成Eclipse或者IDEA项目,接下来我会分别讲述构造这两类项目的过程,在这个过程中,是会存在许许多多奇怪的bug,但是,我会教大家如何处理。

一 . 首先是构造成Eclipse项目
打开命令行,切换到Spring源码目录,输入gradle cleanidea eclipse命令进行编译。
过程图如下:
在这里插入图片描述在这里插入图片描述
这个构造过程需要很长的时间,当然,正常来说,会出现一个问题,提示如下:
在这里插入图片描述
错误类似上面,这个问题的解决:找到对应的文件出错的地方,全部注释掉,可能注释掉一个之后,还会再出现另外一个,总之,按照 注释 的原则,哪里出错,就注释哪个地方,直到没出现错误为止。等待Build成功即可。

二 . 构造IDEA项目
对于构造IDEA项目,个人有两种想法,一种是采用官方给的编译命令,一种是直接在IDEA中导入Eclipse项目。由于第二种方案比较简单,在这里,我只讲第一种。

与构造Eclipse相同的是,切换目录,输入编译命令。但是,该命令有点不一样,是如下:

gradle cleanIdea :spring-oxm:compileTestJava

可能官方给的是gradlew cleanIdea :spring-oxm:compileTestJava这是因为官方采用gradle wrapper构造项目,有一定的好处,但是在有本地gradle的情况下,直接采用即可。
同样,可能会出现像在编译Eclipse项目的相同错误,同样采取 注释原则,最终成功构造。

使用IDEA打开构造出的Gradle项目
打开IDEA,File->New->Project From Existing Sources…,选中spring-framework源码文件夹,点击OK,选择Import project from external model,选中Gradle,点击Next。
在这里插入图片描述
在这里插入图片描述
点击finish,待项目部署依赖完成即可。

Spring修改源码应用

上面的内容讲了那么多,只不过是一个下载源码、构造项目的过程。接下来将讲解应用部分的内容。
在这里插入图片描述
在这里,我将以一个特殊的业务需求作为引导,讲讲应用的内容。

业务需求

首先说明这个需求是一个小demo,用于测试。

对于每一个Http请求,进行过滤,判断是否在黑名单中?
倘若在黑名单中,服务器后台记录黑名单访问记录,并且不对请求进行转发。

学习过Spring源码的Coder们应该知道,请求转发的入口就是中心派发器,类文件在web-mvc包中,图如下:在这里插入图片描述
通过Spring源码学习,我们都知道,真正进行派发的方法,应该是以doXxx命名的,因此,我们成功找到doDispatcher()方法。如下:
在这里插入图片描述
在这里添加业务需求,其中为了让编译出来的类文件即.class文件可以兼容到我们的项目,必须在Spring源码项目创建包名与项目中包名相同,且包含共同变量的文件。如下:
在这里插入图片描述
包名为com.linxu.intelligent.security。OK了!接下来我们就可以对修改后的Spring源码进行编译,在Build的过程中可能会提示一些错误,但是对我们需要的东西没有丝毫的影响。错误如下:
在这里插入图片描述
不用管这些错误,我们只需要进入项目目录,复制DispatcherServler.class文件,替换掉项目中引入的jar包中的class文件即可。
在这里插入图片描述
至此,应用部分的讲解也完成了,有疑问的Coder可以在评论中留言,当然,只要全程依照上述步骤,就不会有问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值