《Spring 手擼專欄》| 開篇介紹,我要帶新人擼 Spring 啦!



作者:小傅哥
博客:https://bugstack.cn

沉淀、分享、成長,讓自己和他人都能有所收獲!😄

一、前言

不正經!寫寫面經,去擼Spring源碼啦🌶?

是的,在寫了4篇關於Spring核心源碼的面經內容后,我決定要去手擼一個Spring了。為啥這么干呢?因為所有我想寫的內容,都希望它是以理科思維理解為目的的學會,而不是靠着硬背記住。而目前面經中涉及到的每一篇Spring源碼內容分析,在即使去掉部分非主流邏輯后,依然會顯得非常龐大。對有經驗的老司機尚可閱讀幾遍接受,但就新人來講只能放入收藏夾吃灰啦!

可能閱讀過我寫的Java面經資料都知道,這是一本以面試題為入口講解 Java 核心內容的技術內容,這份資料會向你證實代碼是對數學邏輯的具體實現。當你仔細閱讀時,會發現Java中有大量的數學知識,包括:擾動函數、負載因子、拉鏈尋址、開放尋址、斐波那契(Fibonacci)散列法還有黃金分割點的使用等等。

所以在編寫面經手冊關於 Spring 系列時,我也希望它是一項有益於程序員真正成長的技術資料和價值匯總,而不僅僅是對一些列繁雜內容的羅列。那么從借鑒 tiny-springmini-spring 以及對我對Spring的學習和常折騰開發中間件的經驗上,來編寫一款適合自己沉淀也滿足於大家學習的Spring資料。

傅哥的面經都是”假“的,一上來就學數學、擼源碼、挖核心! 好!既然你這么說,接下來我們定義目標計划,開始擼源碼

二、目標

本倉庫以 Spring 源碼學習為目的,通過帶着讀者一點點手寫簡化版 Spring 框架,了解 Spring 核心原理,為后續再深入學習 Spring 打下基礎。

在手寫的過程中會剔除 Spring 源碼中繁雜的內容,摘取整體框架中的核心邏輯,簡化代碼實現過程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、資源處理等內容實現。

所有的內容實現都會由簡開始,一步步帶着大家實現,最終所有的內容完成后,在提供一個相對完整的 small-spring,在這個過程中只要你能跟着走下來,那么最后你一定可以較容易的閱讀 Spring 源碼了。

三、計划

原定這周已經准備了 Spring AOP 篩選通知器的相關文章,源碼已經擼好了。但發現這樣發下去我估計閱讀量是要劈叉,多數都進收藏夾。

寫一篇文章最大的希望是與讀者互動起來,不怕你提提意見,就怕你不給三連!所有讀者給出的留言、評論、點贊、分享,都是下一篇文章的120邁動力的開始,所以這篇文章的源碼擼完后,決定該把 Spring 整理整理了,不僅讓我自己有一個學習的過程沉淀感,也讓讀者能真的學會這部分內容。背,那是八股文,懂,才能漲姿勢!

講道理,其實我也是一個樂於手擼源碼的主,因為從源碼的學習中我可以拿到一部分在業務系統開發過程中,不太可能接觸到的技術內容。而這部分從源碼中學到的技術內容又可以復用到業務系統開發中,例如我寫過的很多中間件以及設計模式,都來自於對框架源碼的內容的挖掘和運用。

那 Spring 框架源碼擼多少了?

截止到目前為止,已經寫好了四個章節的案例源碼,主要包括:容器創建、Bean的定義和注冊、構造實例、屬性填充,因為最開始的內容比較簡單,所以寫起來也會比較快。目錄結構如下,后續繼續補充章節:

站在我的角度擼源碼要比寫文章快,哪怕是非常簡單的知識點,也要做既不繁雜冗余的介紹,也要能把知識的廣度和深度講清楚。所以在這個過程中我也會閱讀不少資料以及官網上的文檔,最終把相對那些符合當前章節有價值的內容,展示給讀者學習,同時這也是個人對技術內容的一個積累。

四、源碼

本章節是整個 Spring 手擼專欄的開篇,所以這里先把源碼地址以及學習使用方式交代給讀者,方便后續大家在后續可以順利的學習到這部分內容。

五、總結

  • 當你閱讀 Spring 源碼時你會看到各種的嵌套、遞歸、代理,以及可能連想調試時都不清楚斷點要打在哪里,運行起來的程序跳來跳去。最終導致自己也就看不下去這份源碼了!這是因為 Spring 發展的太久了,它為了滿足不同的場景,已經做了太多的補充和優化,所以我們要做的是剝絲抽繭,體現核心,把最直接相干的內容體現出來進行學習,才更容易理解。
  • 在源碼學習的過程中,小傅哥會和你一起從最簡單、最簡單的Bean容器開始,可能有些時候某些章節內容並不會太多,不過我會幫你建立一些知識關聯,盡可能讓你在這個學習過程中,收獲更多。
  • 那么本章節關於 Spring 手擼專欄的開篇介紹就到這了,接下來你可以閱讀到文章、獲取到源碼,直至我們把所有的內容全部完成,到時候就可以開發出一個相對完整的 Spring 框架了。希望在這個過程中你能和我一直堅持學習打卡!

六、系列推薦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM