带你徒手撸一个Spring Mini框架(手把手带你写一个MiniSpring视频课程最新版)

Spring 不仅是最常用的开源框架,面试中出现频率也比较高。但经过多年发展,它已成为枝繁叶茂的大树,面对“葱葱郁郁”的源代码,很多人经常会迷失其中……

我在学习和使用 Spring 的时候,经历过这三个阶段:

刚开始使用时,很快就遇到瓶颈了;
当我开始阅读源码、了解原理解决困惑后,仍然处于似懂非懂的程度;
后来就尝试自己动手写 Spring,遇到问题想破脑袋后翻查 Spring 的源代码,在一遍一遍地挫折借鉴中打通关节,终于豁然开朗了!
都说学习一种技能最好的形式,就是用自己的方式复现,但是手撸 Spring 框架这件事我们真的能做到吗?

当然可以,如果我们只是实现一个「微型」的 Spring 框架的话,还是可以搞定的。
具体怎么做呢?请听我娓娓道来

我的经验是,理论是要补充的,而且要体系化;其次,实践非常重要,学习 Spring 一定不要去死看书。

我们的目标是掌握 Spring 框架,所以我们不用去独创什么概念和结构,而是老老实实按照 Spring 的结构模仿着手写。自己动手,尽量少用现成的包,以刀耕火种的方式写程序,这可以让我们彻底地理解底层原理。

在这里,我推荐一张「中国 Java 研发工程师鼻祖」之一郭屹梳理的「手写 MiniSpring 体系图」,内容自于他的《手把手带你写一个 MiniSpring》专栏,建议先码后看。

图片

他采用快速迭代的开发模式,从一个最简单的程序开始,一步步堆积演化,每写一小段代码,都是一个可运行的框架。在不断迭代中完善框架功能,去实现 Spring 框架的核心:IOC、MVC、JDBC Template 和 AOP。

在一步步迭代的过程中,将 Spring 的底层原理融入代码中,一层层对照 Spring 框架的现有结构,让原理理解起来不再困难。

我单独学设计模式总是学不扎实,这个专栏还有一个吸引我的点,就是他把 Spring 8 大设计模式都穿插到了课程中,潜移默化地提高设计编码能力。

郭屹  前 Sun Microsystems Java 研发工程师,开源软件 MiniSpring、MiniTomcat 开发者

在长达 30 余年的编程生涯中,他经历了Java 技术的飞速发展,积累了丰富的行业经验和技术实践,有 MiniSpring、MiniTomcat、MiniRedis、MiniLanguage 等几款开源作品。除此之外,他还十分乐于分享自己的知识和经验,一直以来都在通过写作、讲演等方式推动着编程社区的发展。

当我知道他出了专栏时,非常惊喜,一上线就订阅了。

总的来说,他从 Spring 核心源码讲起,带你系统掌握 IoC、AOP 等核心功能,跟着学下来,只用 8 周,就可以搭建一个可用的 Spring 框架。今天只需一顿饭钱,推荐你学一下:

这个课程是怎么设计的?

手写 MiniSpring 的课程大体上分成四大部分:IoC 容器、MVC、JDBC Tempalte 和 AOP。这四大部分就是 Spring 框架的核心了。学好这些,今后你扩展到更多方面也会很容易。

第一部分:IoC容器
IoC 容器是 Spring 核心中的核心,Spring 抽象出 Bean这个概念,用一个容器管理所有的 Bean,并解决上层应用的业务对象之间的耦合问题。后面所有的特性都依赖于 Bean 的概念和这个容器。因此即使我们简单地说 Spring 框架就是一个 IoC 容器也未尝不可。

这个部分从一个极简容器开始,逐步扩展增强,最终实现一个完整的 IoC 容器,包含 Spring 框架对应的核心功能,实现 Bean 的管理。基于这个核心,逐步扩展到 MiniSpring 的其他特性。打好这个基础,后面的学习会事半功倍。

第二部分:MVC
MVC 是 Spring 支持 Web 模式的程序结构,它是基于 Servlet 技术实现的。基本思路是利用 Servlet 机制,用一个单一的 Servlet 拦截所有请求,然后把任务分派给不同的业务类处理,实现原始的 MVC 结构。

在这一部分将 MVC 与第一部分的 IoC 容器结合起来,构成一个更大、更完整的框架。在一步步的构造过程中,他重点讲解大师们怎么逐步拆解这个 Servlet 的功能,把专业的事情交给专门的部件去做,最后构建成一个完整的体系。

第三部分:JDBC Tempalte
JDBC Tempalte 是 Spring 对数据访问的一个实现,重点分析 Spring 的实现方法,体现 Rodd Johnson 对简洁实用原则的把握。这一部分,我们会学习如何提取出一个 JDBC 访问的模板,来固化访问数据库的流程,怎么自动绑定参数值,简化上层应用程序。在此基础之上,我们还将了解到如何通过数据库连接池提高访问性能,以及模仿 MyBatis 将 SQL 语句配置到外部文件中。

通过这部分的学习,我们可以了解到,整个 JDBC Template 的实现都是运用了前面 IoC 管理 Bean 的方式,将数据的访问抽象成一个个 Bean,注入到系统中。由此,更能深刻体会到 IoC 容器的功用。

第四部分:AOP
AOP 是 Spring 框架中实践面向切面编程的探索。面向对象和面向切面,两者一纵一横,编织成完整的程序结构。在这一部分,我们将了解到 Spring AOP 所采用的一个实现方式:JDK 动态代理。我们会学习动态代理的原理,以及如何用这个技术动态插入业务逻辑。

最后我们将再一次看到 AOP 与 IoC 的结合,使用 BeanPostProcessor 可以通过自动化机制生成动态代理。这时你就会体会到,我前面说的“IoC 是 Spring 框架核心中的核心”。

在这一步一步地演化过程中,我们对 Spring 的模仿逐渐成型。

具体内容可以看看目录:

带你徒手撸一个Spring Mini框架(手把手带你写一个MiniSpring视频课程最新版)

立即购买

本站内容均为网友上传分享,本站仅负责分类整理,如有任何问题可联系我们(点这里联系)反馈。

(0)
上一篇 2023年12月26日 下午10:55
下一篇 2023年12月26日 下午11:13

相关推荐

  • 摄影入门课

    希望人人都能拍出好照片 小麥 独立摄影师 你将获得 拍摄设备的选择指南 一套核心的摄影知识体系 实用且易上手的摄影技巧 手机后期 App 使用攻略 课程介绍 当下,照片的重要性不言…

    2023年4月24日
    04
  • Vim 实用技巧必知必会

    让编程效率神器为我所用 吴咏炜 前 Intel 资深软件架构师 你将获得 即学即用的 Vim 高频命令 定制自己专属的 Vim 环境 利用 Vim 脚本和插件实现常用功能 Vim …

    2023年4月24日
    015
  • Dubbo源码剖析与实战课程培训极客时间

    问题+思路+解法+代码=Dubbo最强攻略 何辉  平安壹钱包架构师 十余年 Java 分布式从业经验,擅长用 Java / Python / Go 封装插件或工具来解决通用性问题…

    2023年12月24日
    00
  • 揭开ChatGPT面纱,拥抱AI新潮流(AI大模型之美在线课程)

    徐文浩,bothub 创始人,布奇托网络科技创始人兼 CTO。毕业于上海交通大学计算机系试点班,在 Trilogy Software 写过大型企业软件;在 MediaV 担任技术总…

    2024年1月2日
    00
  • langchain是什么课程?LangChain 实战课

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的Python框架。 手把手带你开发专属的 ChatGPT 应用 黄佳,新加坡科研局首席研究员(…

    2023年12月20日
    01
  • ai画图教程入门教程:AI绘画核心技术与实战

    8 周实现商用级图像特效 南柯  某头部大厂图像团队技术 leader,高级算法专家 目前在某头部大厂工作,带领团队推动多模态大模型领域的能力建设。长期活跃于 AI 绘画技术领域,…

    2024年1月3日
    06
  • 性能工程高手课

    得性能者得天下 庄振运 Facebook 性能优化和容量管理高级专家 你将获得 性能测试的分类和经验教训; 性能分析的基本理论和实践; 性能优化的原则和十大策略; 硅谷一线公司的实…

    2023年4月24日
    06
  • 玩转 Vue 3 全家桶

    基础 + 实战 + 源码,全方位学透 Vue 3 大圣 前百度前端架构师 Vue 交流群 Vue3、Node.js、浏览器、TypeScript 任选 2 门专栏组合, 你将获得 …

    2023年4月24日
    05
  • 如何讲好一堂课

    以学生为中心的课程设计方法论 薛雨 北京新东方教学经理,新东方互联网产品技术总监 你将获得 了解课程设计的底层逻辑; 掌握内容筹备的核心方法; 完善课程内容的逻辑架构; 学会生动地…

    2023年4月24日
    02
  • 全链路压测实战 30 讲

    吃透全链路压测,摆脱性能瓶颈 高楼 盾山科技 CEO,7DGroup 创始人 你将获得 最前沿的压测技术洞察 系统完整的项目落地过程详解 性能瓶颈的快速定位能力 简洁高效的压测报告…

    2023年4月24日
    040

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注