一、關鍵詞
Spring源碼調試:即在debug調試中查看Spring源碼或者自己在源碼中添加一些可辨識的代碼默刚,方便調試代碼甥郑。
Spring源碼注釋:在Spring源碼中添加一些注釋,方便理解代碼含義及思路
二荤西、問題
利用IDEA工具可以很輕易的實現(xiàn)在debug調試時查看源碼澜搅。
如圖:我需要對org.springframework.security:spring-security-web:5.2.2.RELEASE包下的FilterChainProxy類進行調試。
這樣查看源碼已經(jīng)完成
接下來對源碼添加可辨識代碼+注釋
很遺憾并沒有達成預想的目的邪锌。
那么如何解決該問題呢勉躺?
三、思路
問題:上述已經(jīng)完成了源碼的編輯觅丰,但是程序卻沒有走編輯的源碼饵溅。
原因:源碼與其相應編譯文件并不對應。源碼實際上已經(jīng)發(fā)生了改變妇萄,但是編譯文件還是最初的蜕企。所以就會產(chǎn)生當前的問題。
?解決思路1
?下載源碼冠句,然后導入項目中轻掩,通過項目來對源碼進行編譯。使源碼與編譯文件相對應轩端。
?1.1下載源碼放典,可以從本地maven倉庫中獲取(前提是已經(jīng)通過maven下載過源碼)
?新的問題產(chǎn)生了:由于相關的依賴太繁雜,導致無法通過自身項目完成源碼的編譯基茵。
?解決思路2
?既然思路1是由于相關依賴繁雜奋构,那么就嘗試去避免自己導入相關依賴。即下載完整源碼拱层。例如:我分析的是SpringSecurity源碼弥臼,那么我只要下載SpringSecurity的完整源碼,便不需要考慮相關依賴了根灯。
下載地址:Spring項目
?在github上下載源碼径缅。Github上源碼下載比較慢,暫時沒有找到其他資源庫下載烙肺。
?源碼下載后發(fā)現(xiàn)Spring是通過Gradle管理倉庫的纳猪。所以需要安裝與配置Gradle。具體安裝配置見Gradle官方文檔
?思路通了桃笙,這樣就可以具體實施了氏堤。
四、解決方案
?1. 安裝配置Gradle搏明。似乎不同版本的Gradle編譯Spring源碼時會出現(xiàn)一些問題鼠锈。具體還沒研究闪檬。我使用的是Gradle 5.6.4 親測可用。
?2. 導入Spring源碼項目购笆。這邊就不贅述了粗悯。
?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.注意
?每次修改完源碼铭乾,一定記得重新編譯剪廉,這樣才可以使源碼與編譯文件相對應娃循。