有人问我,编程能力怎么提升,我说学源码学的。他有问我,是不学 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 网关架构模型
这些架构模型,都是小傅哥在学习和设计的时候一条条绘制出来的。主要你能按照我的学习路线指引,也一定能理解透彻每一条知识点,并且绘制出非常清晰有用的架构和模型图。