日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

想读Spring源码?先从这篇「 极简教程」开始吧...

發布時間:2025/3/11 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 想读Spring源码?先从这篇「 极简教程」开始吧... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么要閱讀源碼?這是一個有趣的問題,類似的問題還有,為什么要看書?為什么要爬山?

這也是一個哲學問題,我想每個人都有不同的答案,下面我是對閱讀源碼好處的一些思考。
(PS:也歡迎你在評論區留言補充)

閱讀源碼的好處

1.知其然知其所以然

這是一句 IT 人都很熟悉的話,在開源軟件越來越多,并且升級越來越快的今天,如果說還有什么是重要的,那一定是知道它(開源軟件)的核心原理和執行流程,這樣就能為我們快速定位并修復問題提供寶貴的時間。

2.讓自己變得更加優秀

學習源碼可以讓我們站在巨人的肩膀上,你可以學習源碼中的優秀編碼技巧和巧妙的設計思路,以及設計模式的落地應用,還有一些經典的編碼規范和命名規則等。以此來約束和改進自己的編程代碼,才能寫成更好的代碼。

3.找到更好的工作

在日益競爭激烈的面試中,尤其是在大廠的面試中,對于源碼的考察非常看重,只有了解和熟悉這些源碼,才能獲得自己想要的 offer。

那既然閱讀源碼有這么多的好處,我們該如何開始呢?

如何閱讀源碼?

閱讀源碼的實現思路是這樣的,首先我們需要下載 Spring 源碼,然后把 Spring 的源碼導入到 IDE 中,然后再編譯 Spring 源碼,再以添加 Module 的方式添加測試代碼,再把 Spring 源碼部分引入到 Module 中,此時我們就可以使用調試功能進入 Spring 框架的內部,查看方法的執行流程和源碼的具體實現。

Spring 源碼閱讀流程,如下圖所示:

搭建Spring源碼閱讀環境

本文實現環境:Window 10 / JDK 8 / Spring 5.2.2 / IDEA 2019

注意:Spring 5.1 之后需要 JDK 8 以上的環境。

1.安裝Gradle

在正式開始之前我們需要先安裝 Gradle,因為 Spring 是基于 Gradle 構建的

Gradle 是一個開源的基于 JVM 構建工具,和 Maven 工具類似。項目的構建經歷了三個時代:Apache Ant(2000 年左右)、Maven(2004年)和 Gradle(2012 年左右),Gradle 相比于 Maven 配置更加簡單、性能更高、用戶體驗更好(IDE 支持代碼提示)。

例如,使用 maven 時,配置文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mycompany.app</groupId><artifactId>my-app</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>Maven Quick Start Archetype</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency></dependencies> </project>

換成 Gradle,配置如下:

apply plugin:'java' group='com.mycompany.app' archivesBaseName='my-app' version='1.0-SNAPSHOT'repositories{mavenCentral() }dependencies{testCompile 'junit:4.13' }

Hibernate、Spring 等優秀的開源項目都將自己的項目從 Maven 遷移到了 Gradle,Google 官方 Android 開發的 IDE Android Studio 也默認使用了 Gradle 進行構建。但不可否認的是,Maven 在如今仍然是 Java 項目構建的主流方式。

Gradle 和 Maven 的性能測試,如下圖所示:

IDEA 對 Gradle 的支持如下圖所示:

更多關于 Gradle vs Maven 的文章,可以訪問 Gradle 官方提供文章:https://gradle.org/maven-vs-gradle/

首先,我們需要下載 Gradle 安裝包,下載地址為:https://gradle.org/releases/

選擇 binary-only 安裝包,下載即可。

注意:需要安裝 Gradle 5.X 的版本,Spring 最新版不支持 Gradle 6+ 版本。如果安裝 6+ 版本會報錯,信息如下:

The build scan plugin is not compatible with Gradle 6.0 and later.
Please use the Gradle Enterprise plugin instead.
Open File

下載完成之后,我們需要解壓 Gradle 到指定的目錄,例如“C:\Gradle\gradle”。

解壓完成之后,我們需要配置兩個系統變量。

右鍵計算機 -> 屬性 -> 高級系統設置 -> 環境變量,在系統變量區域,先點擊“新建”輸入變量名為:GRADLE_HOME,變量值為:C:\gradle\gradle-5.6.4(根據自己的路徑填寫);再找到 Path 環境變量,新增配置“%GRADLE_HOME%\bin”。

到這里 Gradle 的安裝就已經完成了,接下來我們使用命令行執行工具,來測試一下 Gradle 安裝是否成功。

打開一個新的 cmd 命令窗口,輸入命令 gradle -v,如果出現版本消息,則說明配置成功,如下所示:

C:\Users\stone>gradle -v------------------------------------------------------------ Gradle 5.6.4 ------------------------------------------------------------Build time: 2019-11-01 20:42:00 UTC Revision: dd870424f9bd8e195d614dc14bb140f43c22da98Kotlin: 1.3.41 Groovy: 2.5.4 Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019 JVM: 1.8.0_211 (Oracle Corporation 25.211-b12) OS: Windows 10 10.0 amd64

出現如上版本信息,則說明 Gradle 已經正常安裝完成。

Gradle 加速

和 Maven 的配置相同,我們可以給 Gradle 配置一個阿里的數據源,加速項目的構建(加上下載 Jar 包),找到配置文件 init.gradle,我的默認目錄在 C:\Users\用戶名.gradle,如果沒有找到則新建一個 init.gradle 文件,之后添加如下配置:

allprojects {repositories {maven {url "http://maven.aliyun.com/nexus/content/groups/public"}} }

2.下載最新版的Spring源碼

Spring 源碼地址:https://github.com/spring-projects/spring-framework

小貼士:最好 Fork 一個項目,因為這樣你就可以修改源碼并添加注釋信息到你的倉庫了,這樣就可以把自己學習 Spring 源碼的過程記錄并管理起來。

源碼下載加速

因為 Spring 的源碼文件比較多,如果使用 Spring 原地址下載的話時間會非常長,甚至會失敗嘗試很多次才能完成,此時我們可以使用國內碼云(gitee)上的地址,下載速度會快很多,碼云的地址為https://gitee.com/mirrors/Spring-Framework

如下圖所示,使用官方提供的 Spring 源碼地址,每天同步一次。

3.導入和編譯Spring

Spring 源碼下載完成之后,我們就可以使用 IDEA 導入源碼項目了,為了加快源碼編譯的速度,在導入之后我們可以編輯 Spring 源碼根目錄下的 settings.gradle 文件,添加阿里的源配置信息:

maven { url “http://maven.aliyun.com/nexus/content/groups/public/”}

配置如圖所示:

接下來我們就可以導入 Spring 源碼了,點擊 Import Project,選擇 Spring 源碼的路徑,選擇 Gradle 方法導入,如下圖所示:

點擊 Next,選擇本地的 Gradle 路徑,如下圖所示:

然后點擊 Finish 就會進入項目的自動構建階段了。

Spring 構建完成(耗時比較長),如下圖所示:

到現在為止,Spring 源碼的搭建就已經完成了。

調試Spring源碼

首先我們在 Spring 源碼項目中新增一個測試項目,點擊 New -> Module… 創建一個 Gradle 的 Java 項目,如下圖所示:

創建完成之后,我們在 build.gradle 中添加對 Spring 源碼的依賴:

api(project(":spring-context"))

如下圖所示:

接著,我們需要在項目中創建一個 bean 和配置文件(application.xml)及啟動文件(MyApplication.java)。

bean 實現代碼如下:

public class Person {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;} }

啟動類 MyApplication 代碼如下:

import org.springframework.beans.Person; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyApplication {public static void main(String[] args) {ApplicationContext context =new ClassPathXmlApplicationContext("classpath*:application.xml");Person person = context.getBean("person", Person.class);System.out.println(person.getName());} }

配置文件 application.xml(在 resources 中)配置如下:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="person" class="org.springframework.beans.Person"><property name="id" value="1"/><property name="name" value="Java"/></bean> </beans>

接下來我們就可以啟動并調試 Spring 的源碼了。

總結

Spring 源碼的閱讀并沒有我們想的那么難,安裝 Spring 源碼的調試壞境只是幫你理清楚 Spring 的執行流程。我們只需要下載 Spring 的源碼,安裝 Gradle 的環境,再導入到編譯器中編譯 Spring 源碼包,最后在 Spring 源碼項目中新建一個 Java 項目添加對 Spring 模塊的引用,就可以調試并執行 Spring 源碼了,這樣我們就可以進入 Spring 的內部,進行相關的源碼閱讀了。

更多精彩內容,請關注微信公眾號「Java中文社群」

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的想读Spring源码?先从这篇「 极简教程」开始吧...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。