# 卧龙、凤雏!两源码学得一,代码质量都不会差!

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

有人问我,编程能力怎么提升,我说学源码学的。他有问我,是不学 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 网关架构模型

这些架构模型,都是小傅哥在学习和设计的时候一条条绘制出来的。主要你能按照我的学习路线指引,也一定能理解透彻每一条知识点,并且绘制出非常清晰有用的架构和模型图。

# 三、学习路线:走向高端

《手写 MyBatis:渐进式源码实践》 (opens new window)有纸质图书和星球中的在线电子版。你可以按照自己的喜欢,选择扫码购买图书或者加入小傅哥的星球。

《手写 MyBatis:渐进式源码实践》@小傅哥

除了这本技术图书,小傅哥的知识星球里,涵盖了;业务项目(4)组件项目(3)技术小册(4)手撕源码(2)、以及简历辅导小白辅助的各类课程内容。加入后建议学习路线如下;

🧧加入学习 (opens new window)

  1. 为了面试:Java面经手册(八股)、Lottery 分布式抽奖(项目)、SpringBoot Starter 中间件设计和开发(拉伸技术)、手写Spring/手写Mybatis(2选1)
  2. 夯实能力:重学Java设计模式、Lottery 分布式抽奖、手写Spring、手写Mybatis、ChatGPT 应用项目
  3. 拉伸技术:字节码、IDEA Plugin 开发手册、SpringBoot Starter、API网关
  4. 网络编程:Netty 4.x 小册、IM(Netty 4.x + JavaFx)
  5. 应届小白:重学Java设计模式、Java面经手册、手写Spring/手写Mybatis(2选1)、Lottery 分布式抽奖、SpringBoot Starter 中间件设计和开发,之后学习拉伸技术、网络编程

用户反馈

  • @星期一 (opens new window)通过两天的学习成功将第五、第六章节跑通并完成了测试,感受最深的是对策略模式和模板模式的进一步了解,之前在看重学java设计模式的时候,对于很多设计模式都处于一知半解的状态,现在结合这个抽奖系统,让我对这两个设计模式有了不一样的理解与认识,感觉真的很棒。这种边记笔记,边学习的感觉真的很好,以前可能看视频学,一天能看很多章节,但其实很多东西都没有弄懂,现在是一天一个章节,慢慢去理解代码怎么编写,怎么完成。这些天虽然还有些地方理解的不是很清楚,我还是继续接着学,到时候回头再来温习一遍。
  • @星期一 (opens new window)本身我自己学习是没有画图,记录学习遇到问题的解决方法的习惯,但加入了知识星球,看到里面许多像我一样的学员都开始跟着小傅哥去画图,去记录学习中遇到的问题,我自己也尝试着这样去做,发现学习的思路更加清晰,且记忆更深
  • @神经蛙 (opens new window)断断续续花了2个星期终于感觉完整学完了抽奖系统,首先非常感谢小傅哥,该项目确实让我感觉学习到很多优秀的内容,以下是我学习的一个阶段性总结
  • @L.ast (opens new window)花费了十天时间把整个抽奖系统的基本内容全部动手实现,对个人而言设计模式、xxljob,kafka,以及路由组件设计这部分收获很多。打算抽一天时间回顾总结项目细节,尤其是对一些订单id和日期id这部分设计的作用,解决什么问题。
  • @BookSea (opens new window)加入傅哥的星球是我做过最好的投资之一,2022年3月,加入了傅哥的星球。2023年3月,迎来了我的职业生涯的第一次跳槽。