共計 2004 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章給大家分享的是有關如何修改和編譯 spring-context 的源碼的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
下載源碼
下載源碼的第一步,是找個用到了 spring-context-4.0.2.RELEASE.jar 的 java 工程,如果讀者您手里沒有現成的工程,可以在我的 git 上下載,地址:https://github.com/zq2599/blog_demos
下載后可以發現里面有很多工程,本次實戰用的工程是 springmybatisexceptiondemo,如下圖紅框所示:
用命令行進入 pom.xml 所在的目錄下,執行命令 font color= blue mvn dependency:sources /font,即可下載所有依賴庫的源碼包,如下圖:
此時進入 maven 的本地倉庫,找到 spring-context 的目錄,在里面就能看到源碼的 jar 包,如下圖:
maven 的本地倉庫,一般在用戶目錄的.m2 文件夾下;
解壓 jar 包,準備材料
在 maven 的本地倉庫中,找到 spring-context 的目錄后,將里面的 spring-context-4.0.2.RELEASE.pom,spring-context-4.0.2.RELEASE-sources.jar,spring-context-4.0.2.RELEASE.jar 這三個文件都復制到一個新建的文件夾中,然后將 spring-context-4.0.2.RELEASE-sources.jar 和 spring-context-4.0.2.RELEASE.jar 都解壓;
## 新建 spring-context 的 maven 工程 ## 新建一個 maven 工程,pom 文件的內容和 spring-context-4.0.2.RELEASE.pom 的一模一樣,如下圖:
進入剛才解壓的 spring-context-4.0.2.RELEASE-sources.jar 的文件夾,把里面的 org 文件夾整個都復制到新建的 maven 工程的 java 文件夾下,如下圖所示:
只復制 java 文件是不夠的,還要復制 META-INF 和 xsd 文件,這些東西都不在 spring-context-4.0.2.RELEASE-sources.jar 包中,還記得剛剛我們把 spring-context-4.0.2.RELEASE.jar 文件也解壓了么?META-INF 和 xsd 文件在這個解壓的文件夾中可以找到;
先是 META-INF,在 spring-context-4.0.2.RELEASE.jar 的解壓目錄中,把 META-INF 文件夾復制到新建的 maven 工程的 resources 文件夾下,如下圖所示:
接下來是 xsd 文件,在 spring-context-4.0.2.RELEASE.jar 的解壓目錄中,進入 org/springframework/cache/config 子目錄,里面不以 class 為后綴的文件有四個,把這四個文件全部復制到 maven 工程源碼的 org/springframework/cache/config 目錄下,如下圖:
以下幾個目錄下也有 xsd 文件,請像上面的方法一樣,將里面的 xsd 和 gif 都復制到 maven 工程中對應的目錄下:
org/springframework/context/config org/springframework/ejb/config org/springframework/scheduling/config org/springframework/scripting/config
構建 jar 包
在上面所建的 maven 工程的 pom.xml 文件所在目錄下,執行命令 font color= blue mvn clean package -U -Dmaven.test.skip=true /font,執行成功后,在 target 目錄下就能看到最新構建的 jar 包了,如下圖:
至此,我們實踐了構建 spring-context 的 jar 包的過程,根據實際需要,我們可以先修改了源碼再構建,例如下圖是我修改的 CommonAnnotationBeanPostProcessor 類的源碼,很簡單,加了一些輸出,比如打印當前緩存的 key,以及代碼的調用棧情況:
改完代碼后重新構建,生成新的 spring-context-4.0.2.RELEASE.jar 文件,我的 web 應用之前已經部署在了 tomcat 下,現在打開這個應用的 lib 目錄,用這個 jar 替換原有的文件,再重啟 tomcat,在控制臺可以看到打印出了比以前更多的異常堆棧內容,便于我們定位問題:
感謝各位的閱讀!關于“如何修改和編譯 spring-context 的源碼”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!