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