亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

最近呀,有小伙伴提出 自己在學習 Spring 的時候,這個源碼環境有些搞不定。 那這怎么能行,不能因為這點小困難就讓小伙伴放棄呀。

這里咱就不在贅述讀Spring源碼的好處了吧,想干這行的應該都懂。

今天就是要帶那些想要學習 Spring 源碼的小伙伴,手把手帶大家把這個源碼編譯好,這活盡量呀,給大家得整的漂亮點。

這里說明下,這個操作過程不需要科學上網,但是,注意了,這里有個但是,你總得保證你的電腦能上網吧。

考慮到有的小伙伴可能因為網絡原因可能訪問不了 github 或者下載非常慢,那這種情況的小伙伴也可以選擇看我那期一招搞定 github 訪問慢的文章。

當然不搞也沒關系,文章中涉及的源碼和工具包指北君也都會打包下載好最后給到大家,那來吧,直接開搞。

下載Spring源碼

這里有的小伙伴可能不知道源碼在哪下載,沒關系!這里的思路一般是我們要搞某個技術,第一反應就是先上它的官網。直接在搜索欄輸入 Spring,就能看到它的官網了。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

打開 Spring 的官網:https://spring.io/

Spring 全家桶包含的項目有很多,我們選擇我們今天要搞得 Spring 框架:

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

這里你就可以看到最新的正式發布版本已經是 5.3.8 的,真的是更新的好快,反正咱們是學習(實際項目千萬別用最新版本),這里我就帶大家來編譯最新的版本,這樣大家也可以學習到最新的功能特性。

當然了這個版本不重要,你也可以選擇其他版本,咱今天是授人以漁,不是授人以魚,重要的是學習這個方法,你看完后想編譯啥版本就編譯啥版本。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

我們點擊右上角的 github 圖標就會跳轉到 github 上面的源碼項目了。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

下載方式可以直接通過 git clone 或者 下載 zip 包自己解壓下,我這里是直接下載 zip 包了。

下載地址:
https://github.com/spring-projects/spring-framework/releases

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

閱讀Spring的官方編譯文檔

其實呀,很多搞不定 Spring 源碼編譯的小伙伴,肯定很多都是去網上隨便找個教程,結果各種踩坑,因為搜到的資料參差不齊,這點估計大家都深有體會了。

所以我們就要養成一個習慣,必須要看官方文檔。這里也不是要求大家其它資料不看,畢竟也有很多優秀的博客,大家都是成年人,肯定是全都要嘍。

官方文檔一般都是英文,但是別害怕,我這個大學四級都考了三回的英語渣,都能勉強看,大家肯定都沒問題了,況且咱可以借助翻譯插件嘛。

如何編譯 Spring 源碼其實 Spring 官方提供了詳細的文檔,有離線版也有在線版,也就是開源項目都有的 REDAME 文件。

我這里選擇離線版來演示吧。我們解壓進入到下載好的 Spring 框架源碼項目下,查看 REDAME 。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

就會發現有一個 build from source 的章節。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

點擊這個鏈接,就會看到詳細的編譯構建 Spring 框架源碼的文檔了:
https://github.com/spring-projects/spring-framework/wiki/Build-from-Source

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

接下來,咱們就按照文檔來編譯 Spring-Framework5.3.8 版本的源碼。 根據文檔的說明,首先我們要有一個 JDk8 或者更高的版本環境,我電腦安裝的是 JDk11 所以沒啥問題。 然后要安裝 Git,用來拉取源代碼的,因為我們已經下載了源代碼,就不管它了。

修改配置

先別著急,在編譯構建之前,教大家一絕招。這也是我在編譯過程中實踐出來滴心得。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

從本地下載gradle

因為第一次運行就會去下載 gradle 到本地,然后通過 gradle 來編譯 Spring 源碼。 這個就很慢了,外網服務器下載,你懂得,有被墻的風險,并且本身也賊慢。

那為什么開始編譯構建就會自動下載 gradle 呢?從哪里下載?下載的版本是多少?

我們打開 Spring 源碼的根目錄:

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

配置文件的地址就是源碼根目錄的二級目錄下的 gradle-wrApper.properties 文件。

打開文件包含下列內容:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
  • distributionUrl:表示的就是 gradle 的下載地址,默認配置的是一個遠程 URL。
  • distributionBase:下載后存放的目錄,默認就是用戶目錄下的 .gradle 目錄;
  • zipStoreBase:解壓后存放的目錄

我在構建的過程中發現配置的下載地址下載非常慢,經常超時,甚至有時候被墻。

所以我們倒不如先下載到本地,然后修改配置文件從本地獲取 gradle,這樣一來編譯構建就會快很多了。

我們只需要修改 gradle 的下載地址就好了,其他的配置項建議保持不變。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

上述配置的意思就是如果我們運行 gradlew 會自動去 file
:///Users/sevenluo/IdeaProjects/spring-simple/gradle-6.8.3-bin.zip 這個目錄下載一個 gradle 到當前用戶的 .gradlewrapperdists目錄 ,然后解壓到當前用戶的 .gradlewrapperdists 目錄。

但是實際目錄不是這個,這個命令還會自己生成一些目錄。下圖是指北君電腦實際 gradle 的下載解壓目錄:

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

我本地使用的是 gradle-6.8.3-bin.zip ,如果你本地網絡沒問題可以自行去官網下載,當然指北君也下載好了,最后也都會給大家。

修改遠程倉庫

改完上面的配置也先別著急運行編譯,現在解決了下載 gradle 慢的問題,但是編譯開始會使用 gradle 從遠程倉庫下載大量相關依賴的包。

如果你采用默認配置,那么我可以負責任的告訴你,你絕對得等呀等呀等,等的黃花菜都涼了。而且還有很大可能會失敗!原因也是因為默認倉庫是國外的服務器,速度真的是沒誰了,想屎,不煩躁都不行。

所以呀,這里我們要把遠程倉庫改為咱們國內的阿里云,這樣就舒服多了,怎么改?

很簡單,找到 Spring 源碼根目錄下的 build.gradle,打開編輯添加阿里云的倉庫。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

maven { url 'https://maven.aliyun.com/repository/public' } // 阿里云
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } // 插件

那到這里,就可以運行了?

no!no!no!,hold on, hold on

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

再打開 Spring 源碼根目錄下的 settings.gradle 文件,添加阿里云倉庫。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

maven { url 'https://maven.aliyun.com/repository/public' } //阿里云
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } //插件

至此萬事具備只欠東風了,就等我們開始編譯。

當然上面這些配置優化是指北君在實踐中自己總結出來的,如果你的網速夠快你完全可以不用優化,直接運行下面的命令。

開始編譯構建

我們編譯構建 Spring 源碼,一般都是要導入到 IDEA 里面進行測試或者閱讀的。Spring 對于如何導入也提供了文檔,是不是很貼心。當然也有導入 Eclipse 的文檔,大家可以根據自己的需求來操作。我這里是用 IDEA 的,你如果導入 Eclipse 操作也都是基本上一樣的。

導入 idea 的文檔地址:

https://github.com/spring-projects/spring-framework/blob/main/import-into-idea.md
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

根據文檔的提示在導入 idea 之前需要去 Precompile spring-oxm ,也就是預編譯 spring-oxm 這個項目。運行 ./gradlew
:spring-oxm:compileTestJAVA.

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

預編譯起來也很快,我電腦上一共耗時 23 毫秒。

然后我們還要預編譯下 spring-core 這個項目,因為后面我們運行測試模塊的時候需要用到里面的類。執行:

./gradlew :spring-core:compileTestJava.
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

導入IDEA

  1. 開始使用idea導入Spring源碼,File -> New -> Project from Existing Souces…

 

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

  1. 選擇 Spring 源碼項目的目錄,進而選擇根目錄當中的 build.gradle 文件導入;
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

  1. 導入 idea 之后會開始自動構建、建立索引,這個過程也是很漫長,你只能等,我這邊用了不到7分鐘,看電腦性能;
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

  1. 接下來我們對 idea 進行一些設置,不然每次 idea 運行都會通過 gradle 去編譯運行。gradle 運行編譯特別慢,需要改成idea自己編譯運行.
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

說明一下,這里不是一定要改,但是如果你不改用默認的則會特別慢,改成idea快的不止一點點。

到這,我們的 spring 框架源碼就編譯完了,為了檢驗我們的勞動成果,下面建一個 moudle 來測試一下。

驗證測試

  1. 在我們的 spring 源碼項目下新建我們自己的測試module,如下圖所示;
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 


手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

輸入測試的 moudle 名:

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

  1. 建好項目之后再 gradle 的配置文件中添加 spring 的依賴,相當于你建了一個maven項目,在pom文件中添加spring的依賴;
implementation(project(":spring-context"))

修改后的配置:

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

  1. 寫測試代碼;
  • 配置類的代碼,用于指定掃描的bean;
package com.sevenluo.spring.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.sevenluo.spring")
public class AppConfig {
//掃描ccom.sevenluo.spring包下面的所有bean
}
  • 寫一個sevice,被掃描的bean;
package com.sevenluo.spring.services;

import org.springframework.stereotype.Service;

@Service
public class HelloService {
	public void hello() {
		System.out.println("Hello,sevenluo!");
	}
}
  • 測試類代碼;
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

  1. 右鍵運行——可能你會出現一些錯誤;比如博主這里就出現了ava: 程序包jdk.jfr不存在 錯誤;
手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

這個問題是因為 jdk.jfr 是 java9 以后才有的模塊,而 spring 源碼 5.3.8 版本已經使用這個包,所以我們需要設置我們項目配置的 jdk 版本高于9。

排查后,是因為 idea 配置的 java 編譯的版本是8,改為11即可。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

最后再次運行,就成功了。

手把手帶你編譯Spring框架源碼,讓你的學習事半功倍

 

總結

今天主要分享了如何編譯 spring-framework 源碼如何編譯構建,以及怎么導入到 IDEA 中,方便我們測試和閱讀。

其中,在編譯前我結合自己的實踐經驗,提出了一些需要優化的配置,極大的提高了編譯構建的速度以及成功率。比如本地下載 gradle,配置阿里云倉庫等。

正如開頭的對話,我希望可以幫助想深入學習Spring,但是卻苦于基礎環境配置搞不太定的小伙伴。

分享到:
標簽:框架 Spring
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定