Spring 原始碼閱讀環境的搭建

2022-06-06 04:51:09 字數 2728 閱讀 1640

前言

git

jdkmaster 分支需要 jdk 11

5.2.x 分支, jdk8 即可

gradle 6.5.1

idea 最新 (2020.2.3)

clone 原始碼

git clone
使用 idea 開啟

等待 idea 載入完成即可。

注: 也可以指定 clone 的分支

git clone -b 5.2.x
或者先 fork 到自己的倉庫,然後再 clone。

這裡我是 fork 到我的倉庫,然後再 clone 的。

當前 master 分支代表的版本為 5.3.2-snapshot。

其中usercomponent新增了@component註解, 程式正常執行則一切 ok。可以開始愉快的除錯**了。

編譯失敗

報錯如下:

fatal: not a git repository (or any of the parent directories): .git

build successful in 14s

build scan background action failed.

org.gradle.process.internal.execexception: process 'command 'git'' finished with non-zero exit value 128

... 其他省略

看意思是沒有 git 配置,那就新增上吧!

這時候想著新增 git

vcs->enable version control integration...-> 右上角reload all gradle projects

依然報錯

查詢問題

建議使用

$ git clone [email protected]:spring-projects/spring-framework.git
意思就是 zip 發行版主要是用來共享源**,但不一定用於構建它。

最後我選擇了使用 clone 的方式,直接 clone 下來,然後 build 通過。

缺少 cglib 和 objenesis 包

kotlin: warnings found and -weeror specified
沒有spring-cglib-repackspring-objenesis-repack

執行這兩個即可。

找不到包 jdk.jfr

import jdk.jfr.category;

import jdk.jfr.description;

import jdk.jfr.event;

import jdk.jfr.label;

jdk 公升級為 11。因為我本地使用的是 jdk8,發現報錯,jfr 包需要公升級 jdk 11 才有。

如果不生效,可以通過:

idea ->file->project structure->project檢查下是否修改為 jdk 11

快捷鍵:⌘ + ;

相關資料

spring 倉庫:

spring 構建文件:/wiki/build-from-source

歷史文章

閱讀Spring原始碼

如何閱讀spring原始碼 學習原始碼的思路 為擴充套件 調優 掌握框架的工作流程和原理。提公升自己的程式設計能力 學習他人的設計模式和思路。掌握設計方法和分析思路。學習原始碼的方法 思路掌握問題域理論和核心概念 搞明白做什麼,如何做 從整體到部分 找到入口,先理清主幹流程,後細節 多思考,多分析 ...

Spring 原始碼閱讀(1)

這週在學習spring的原始碼,常常迷失在 森林中,因為英語水平不高,常常需要借助google翻譯幫忙解釋注釋,所以速度比較慢。下面是我模擬spring的解析xml,依賴注入的過程,比較簡略。node node nodes.item i if node instanceof element claz...

spring原始碼閱讀(1)

spring核心是ioc和aop,aop的底層是 實現。分為兩種 jdk動態 和cglib 區別 動態 被 物件是要實現乙個介面,類首先要拿到這個介面,來進行強制轉換,通過反射來生成 物件 public class meipo implements invocationhandler overrid...