美文网首页
关于Spring源码调试、注释

关于Spring源码调试、注释

作者: ForeverChance | 来源:发表于2020-04-02 11:02 被阅读0次

    一、关键词

    Spring源码调试:即在debug调试中查看Spring源码或者自己在源码中添加一些可辨识的代码,方便调试代码。
    Spring源码注释:在Spring源码中添加一些注释,方便理解代码含义及思路

    效果展示

    二、问题

    利用IDEA工具可以很轻易的实现在debug调试时查看源码。
    如图:我需要对org.springframework.security:spring-security-web:5.2.2.RELEASE包下的FilterChainProxy类进行调试。



    调试界面

    这样查看源码已经完成
    接下来对源码添加可辨识代码+注释



    很遗憾并没有达成预想的目的。
    那么如何解决该问题呢?

    三、思路

    问题:上述已经完成了源码的编辑,但是程序却没有走编辑的源码。
    原因:源码与其相应编译文件并不对应。源码实际上已经发生了改变,但是编译文件还是最初的。所以就会产生当前的问题。

     解决思路1

    下载源码,然后导入项目中,通过项目来对源码进行编译。使源码与编译文件相对应。

     1.1下载源码,可以从本地maven仓库中获取(前提是已经通过maven下载过源码)


    新的问题产生了:由于相关的依赖太繁杂,导致无法通过自身项目完成源码的编译。

     解决思路2

    既然思路1是由于相关依赖繁杂,那么就尝试去避免自己导入相关依赖。即下载完整源码。例如:我分析的是SpringSecurity源码,那么我只要下载SpringSecurity的完整源码,便不需要考虑相关依赖了。
    下载地址:Spring项目


    在github上下载源码。Github上源码下载比较慢,暂时没有找到其他资源库下载。
    源码下载后发现Spring是通过Gradle管理仓库的。所以需要安装与配置Gradle。具体安装配置见Gradle官方文档
    思路通了,这样就可以具体实施了。

    四、解决方案

     1. 安装配置Gradle。似乎不同版本的Gradle编译Spring源码时会出现一些问题。具体还没研究。我使用的是Gradle 5.6.4 亲测可用。

     2. 导入Spring源码项目。这边就不赘述了。

    设置自己的Gradle路径

     3. build源码

     4. 对需要的源码进行编译

     5. 打开自己的项目引入源码和编译文件


     这样就完成对源码和编译文件的配置了

     6. 接下来进行测试

     6.1 对源码添加可辨识代码+注释
     6.2 这样就看到源码项目中的文件也相应修改。我们需要对源码进行重新编译,才能使源码与编译文件相对应。

     可以通过阿里库为build.gradle提升下载速度
    // 阿里库
    repositories {
            maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
            maven { url 'https://maven.aliyun.com/repository/google' }
            maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
            maven { url 'https://maven.aliyun.com/repository/jcenter'}
            maven { url 'https://repo.spring.io/plugins-snapshot' }
            maven { url 'https://plugins.gradle.org/m2/' }
        }
    
    编译成功
     6.3 成功后返回自己的项目,进行测试
    调试成功

    五、总结

     1.思路

     运行的编译文件与源文件相对应

     2.注意

     每次修改完源码,一定记得重新编译,这样才可以使源码与编译文件相对应。

    相关文章

      网友评论

          本文标题:关于Spring源码调试、注释

          本文链接:https://www.haomeiwen.com/subject/xqitphtx.html