兩源碼學其一,質量都不會差!
有人問我,編程能力怎么提升,我說學源碼學的。他有問我,是不學 Spring 源碼比學 MyBatis 更好,MyBatis 太簡單了!?? 我說死鬼,且邊去。
MyBatis 源碼真的沒有那么簡單,也沒有說不如 Spring 源碼的設計。一個在源碼中駕馭了數十種以上設計模式的 MyBatis 它的代碼設計,可不是小扒菜。可以這么說,學了 Spring 源碼可以應對面試和開發組件,但學了 MyBatis 的源碼,那么你可以做架構師!接下來,小傅哥就告訴你為什么!
一、臥龍鳳雛:平分秋色
Spring 和 MyBatis 可以說是 Java 行業的臥龍鳳雛,其他同類的框架也不少,但要說穩定、可靠、方便,還得是它們2個的組合。也正因為這樣在各個企業中,也是用的非常之多,所以面試的時候也更喜歡問這2個框架源碼。
那么這兩個框架在設計和實現上,能平分秋色嗎??? 問你這兩個框架有啥不同,你能一句話就總結到位不?
臥龍:Spring - 萬物皆可Bean,把一個 Bean 對象拆分到稀碎,細化流程。在每個拆分后的節點內,插入可被外部使用的動作流程。如你可以在Bean對象初始化過程中修改獲得對象、修改對象、添加對象等任何你想擴展的流程。
鳳雛:MyBatis - 與 Spring 不同的是,MyBatis 管理的是多邊服務。左手拿著 JDBC、右手握著 Java DAO,通過六合之力,把兩招合并成一整招。你過來呀,執行呀!
所以,在小傅哥深度學習完兩套源碼后,感受;Spring 復雜精妙,設計的高。MyBatis 大開大和,設計的硬。Spring 學習完以后,使用 Spring 和調試 Bug 都會變得有理有據,也能基于 Spring 開發 SpringBoot Starter 組件。而 MyBatis 學習完,是更貼近業務開發,你能學習到非常多的編碼技巧。就僅僅一個 session 會話流程模型的設計,你既可以用到 API網關,也可以用到如 ChatGPT 接口封裝。有了 MyBatis 源碼的學習經驗,對于這樣的同類訴求開發,你會變得非常得心應手。而這就是你在積累架構師對系統設計經驗和落地能力。
二、架構之美:沁人心脾
我特別喜歡有難度也有復雜流程的的東西,因為難度一上來,就有了駕馭的空間。就像天罡36板斧的能力,只切菜就沒看頭。但如果是戰場交鋒,那么打起來肯定漂亮。而且很多小伙伴在職場上的晉升,也都是靠那些俏活上去的,天天搞 ERP 寫 CRUD 多少年都白費蠟。
那么小傅哥在學習完 MyBatis 的源碼后,就開始架構了 API 網關的設計。MyBatis 是管理著 JDBC 與 DAO,而 API 是管理著 RPC 與 HTTP。這不是天然的 session 會話模型設計嗎,簡直和 MyBatis 的架構一毛一樣。干它勢在必行!—— 小傅哥接下來就把這兩套架構模型展示出來,讓大家對比看看。
1. MyBatis ORM架構模型
2. API 網關架構模型
這些架構模型,都是小傅哥在學習和設計的時候一條條繪制出來的。主要你能按照我的學習路線指引,也一定能理解透徹每一條知識點,并且繪制出非常清晰有用的架構和模型圖。