Spring 系列篇之源碼導(dǎo)入

本篇文章小編就帶大家,如何把 spring官網(wǎng) 源碼下載下來,并在spring項目中創(chuàng)建一個自己的模塊讓他Run起來,方便以后我們學(xué)習(xí)源碼,之后的系列文章中都會在此源碼基礎(chǔ)上做研究與學(xué)習(xí)!

當(dāng)然這篇文章講的 spring 就是 Spring Framework

1. 認(rèn)識

在下載源碼之前,我們首先應(yīng)該對spring源碼的結(jié)構(gòu)與版本有個認(rèn)知,搞清楚我們需要研究的哪幾個模塊和版本

1.1 模塊依賴結(jié)構(gòu)

展示主要模塊依賴


模塊依賴

1.1.2 分支列表

spring 分支列表

1.2 版本選擇

相信大家對 spring boot 都不陌生,我們都知道spring boot里面是依賴spring的。那我們可以看看spring boot現(xiàn)在發(fā)布版。

spring boot 版本

從上圖可以發(fā)現(xiàn)我們官網(wǎng)列出的版本中2.1.132.2.5是正式發(fā)布版,但是小編還是選擇2.1.13版,那接下來我們在看看2.1.13版本依賴的是哪個版本的spring,我們可以去 maven倉庫 查看依賴關(guān)系。
spring boot 2.1.13 依賴 spring 版本

可以看到是依賴的5.1.14.RELEASE版本。那么根據(jù)上面的 分支列表 我們此次 研究就選擇spring 分支 5.1.x

2. 導(dǎo)入源碼

2.1 環(huán)境準(zhǔn)備

開發(fā)工具idea
版本控制工具git
gradle 4.10.3 以上(推薦使用spring自帶的gradle)

2.2 代碼clong

因為是自己想研究spring代碼,所以小編建議把spring項目fork到自己的github倉庫下,然后下載自己倉庫的spring代碼,這樣方便我們后面做的注釋或者測試代碼可以提交上去。

2.2.1 項目gradle選擇

可以選擇默認(rèn)的,也可以選擇自己下載好的gradle


項目gradle選擇

2.2.1 復(fù)制git倉庫地址并利用idea下載

2.2.2 創(chuàng)建一個自己的模塊

創(chuàng)建自己模塊

2.2.2.1 修改自己模塊中g(shù)radle.build

添加spring-context依賴

dependencies {
    compile(project(":spring-context"))
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

2.2.2.2 修改其它模塊中的配置

spring-core.gradle

compileOnly(project(":kotlin-coroutines")) 
修改成
compile(project(":kotlin-coroutines"))

spring-context.gradle

optional(project(":spring-instrument"))
修改為
compile(project(":spring-instrument"))

2.2.2.3 執(zhí)行模塊依賴構(gòu)件

gradle4 buildDependents
gradle buildDependents

2.2.2.4 創(chuàng)建并啟動模塊

啟動模塊
2.2.2.4.1 創(chuàng)建一個Bean Component
@Service
public class HelloWorld {
    public void say(){
        System.out.println("hello world");
    }
}
2.2.2.4.2 創(chuàng)建一個Main start
@ComponentScan("com.lykos")
public class Rocket {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext();
        annotationConfigApplicationContext.register(Rocket.class);
        annotationConfigApplicationContext.refresh();
        annotationConfigApplicationContext.getBean(HelloWorld.class).say();
    }
}

2.2.2.5 啟動項目

啟動成功如下


啟動成功例子

3. 感謝

感謝各位老鐵花時間觀看!
歡迎留言指正!
內(nèi)容持續(xù)更新!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容