說在前頭:本人為大二在讀學生,書寫文章的目的是為了對自己掌握的知識和技術進行一定的記錄,同時樂于與大家一起分享,因本人資曆尚淺,能力有限,文章難免存在一些錯漏之處,還請閱讀此文章的大牛們見諒與斧正。若在閱讀時有任何的問題,也可通過評論提出,本人将根據自身能力對問題進行一定的解答。
1.什麼是Spring?
Spring 架構是一個 Java 平台,為開發 Java 應用程式提供全面的基礎架構支援。Spring 處理基礎結構,是以您可以專注于應用程式。
Spring 使您能夠從“普通的 Java 對象”(POJO)建構應用程式,并将企業服務非侵入性地應用于 POJO。此功能适用于 Java SE 程式設計模型以及全部和部分 Java EE。
介于本文章側重點為Spring源碼的建構,對于Spring的介紹先講到這裡,若想對Spring有更深刻的了解,建議通過閱讀Spring的官方文檔或網上的Spring中文文檔進行了解。在這裡給大家列出官方文檔位址和中文文檔位址,大家自行選擇閱讀。
Spring官方文檔:https://spring.io/projects/spring-framework Spring中文文檔:https://www.docs4dev.com/docs/zh/spring-framework/5.1.3.RELEASE/reference/overview.html#overview-spring
2.建構前準備
- Spring5.0.2源碼
- Gradle4.0
- IntelliJ IDEA 2019.1
下載下傳Spring.5.0.2源碼 github下載下傳位址: https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip 如果遇到無法通路github或下載下傳時非常緩慢的問題,可以關注微信訂閱号“Bosen的技術分享棧” 回複“spring”即可擷取Spring5的源碼百度雲分享位址, 輸入擷取碼下載下傳解壓即可。将下載下傳好的源碼解壓(目錄結構如下)
打開build.gradle檔案找到下圖對應的位置, 添加阿裡雲鏡像 maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}
下載下傳Gradle4.0 因為spring5源碼項目是使用gradle建構的, 是以我們需要下載下傳gradle幫我們建構源碼閱讀環境, 這裡下載下傳官方推薦的4.0版本。通路官網進行下載下傳: https://gradle.org/releases/ 下載下傳完成後,解壓到對應的路徑即可 接下來還需配置gradle的環境變量(根據下圖配置)
配置好環境變量後,打開指令行界面輸入 gradle -v 若輸入資訊如下圖,即設定成功
3.開始建構
gradle配置完成後,我們将指令行目錄切換到我們源碼的根目錄并執行 gradlew.bat(如下) 執行gradlew.bat後,項目将開始建構源代碼,如下圖即建構成功
将源碼建構好後,我們需要将項目建構成eclipse項目, 我們繼續執行根目錄下的 import-into-eclipse.bat檔案開始建構, 網絡良好的情況下,十分鐘左右即可建構完成。建構成功後如下圖所示
此時我們已經将spring源碼建構為eclipse項目, 我們隻需使用idea打開該項目即可(如下圖)
點選Ok,idea将會自動下載下傳對應的依賴,大約需等待十分鐘左右 等待idea下載下傳完成後,項目欄如上圖所示 要如何檢驗自己的項目是否以及成功建構? 方法很簡單,如下圖路徑找到ApplicationContext 然後使用快捷鍵ctrl+alt+shitl+u檢視 如果生成了下面的類關系圖即表明你的源碼建構成功
4.測試
接下來我們開始對我們建構好的spring進行使用、測試 測試前我們需要對源碼進行預編譯(如下圖)
等待預編譯完成後,就可以正式開始編寫我們的測試代碼,測試代碼結構如下 ApplicationConfig 配置類 IndexService 模拟邏輯處理類 Application 啟動類
package com.bosen.www.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* <p>配置類</p>
* @author Bosen 2021/5/15 5:52
*/
@ComponentScan("com.bosen.www")
@Configuration
public class ApplicationConfig {}
package com.bosen.www.service;
import org.springframework.stereotype.Service;
/**
* <p>模拟業務邏輯處理</p>
* @author Bosen 2021/5/15 5:54
*/
@Service
public class IndexService {
public String test() {
return "This is IndexService test();";
}
}
package com.bosen.www;
import com.bosen.www.config.ApplicationConfig;
import com.bosen.www.service.IndexService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Application {
public static void main(String[] args) {
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(ApplicationConfig.class);
IndexService service = applicationContext.getBean(IndexService.class);
System.out.println(service.test());
}
}
測試程式運作結果如下
如果程式在運作時報如下錯誤,這是因為缺失AspecrJ而導緻的, 原因可能是建構時,因為網絡問題未成功下載下傳到AspecrJ, 是以需要我們自己手動下載下傳AspecrJ,具體操作可參考下面的文章。 https://blog.csdn.net/weixin_43899635/article/details/110368806
5.總結
經過上面的“九九八十一難”我們終于成功建構好了Spring5的源碼,其實總的建構過程并不複雜,雖然在建構過程可能還會遇到各種錯誤,但隻要靜下心來分析錯誤原因,一步一步排查就可以很輕易的建構成功。
那今天就講到這裡吧,剛建構好Spring5源碼的你是不是已經迫不及待的想要”一睹為快“了呢?一起加油吧!
👇長按二維碼關注👇