写点什么

一本书,带你走出 Spring 新手村

  • 2022-11-08
    北京
  • 本文字数:2007 字

    阅读完需:约 7 分钟

与 IOC、AOP、SPI 一样,Spring 提供的不只是一个开发框架,还包括它的设计思想。

它通过解耦 Bean 对象的实例化过程,管理 Bean 的生命周期,来维护开发过程中对象的使用过程。让你不需刀耕火种般 “new ”一个对象,也不需如 EJB 一样笨重臃肿地开发维护,只需像春风一样万物(万物皆可 Bean)细无声般地使用。可以说,Spring 完全担得起 Java 技术设计顶峰的称号。

除了运用,Spring 框架也是众多开发者最先接触到的一个源码级复杂项目。

对于任何初出茅庐,完成初次蜕变的开发者来说,苦苦寻觅各种项目进行练习,都不如学习 Spring 源码来得痛快。在其架构的设计、分治抽象的运用、设计模式的驾驭上,Spring 框架都是顶级的,也是最能给你带来丰富收获的。

学习 Spring 源码难吗?

难!

  • 难到有 1~2 年编程经验的工程师,也不知道从哪里下手。

  • 大部分资料和书籍都是从一个知识点直接透析到内核。

  • 没有阅读源码经验的小白,根本没法如编写者般感同身受地学习,看时如云里雾里,忘时如过眼云烟。

为啥会这样?

因为 Spring 产生太久了,源码太大了,主干核心源码外的繁枝末节太多太多。就像将一个沙发左移、套个沙发罩、盖上一块布,再铺个小坐垫,沙发套、盖布、坐垫对初学源码的开发者来说,并没有那么重要,我们要了解的是最初的沙发、最开始的木板,看看它的结构、闻闻它的味道。

所以,如果你真地想了解 Spring 这个源码级复杂框架的设计和实现精髓,就应该像开发一个项目一样,从零写一遍。只有你写了这个项目,才能知道具体细节是如何处理的,各类设计是如何实现的。


驾驭复杂源码

对于大部分使用 Spring 框架的研发人员来说,在遇到 Spring 框架的报错提醒, 以及需要基于 Spring 框架开发 SpringBoot Starter 等技术类组件时,都会尝试阅读 Spring 框架的源码。

由于 Spring 框架的源码庞大、复杂,也不像平常的业务流程代码开发一样具有分层结构,并且使用了大量的设计模式,所以阅读难度较大,研发人员很难厘清其中的调用链路和各个类之间的关系。

《手写 Spring:渐进式源码实践》一书的作者小傅哥最初学习 Spring 时,也阅读了不少相关图书,在反复学习后,仍然不能轻易理解 Spring 框架中各个功能的实现细节。其中一个原因是自己没有手动实现,只阅读图书,很难完全掌握 Spring 框架的精髓。

因此,小傅哥采用从零手写 Spring 的方式,摒弃 Spring 源码中繁杂的内容,选择整体框架中的核心逻辑,简化代码实现过程,保留核心功能,如 IOC、AOP、Bean 的生命周期、上下文、 作用域和资源处理、事务等。在开发过程中,细化功能模块,逐步完成一个简单版的 Spring 框架。

在学习过程中,小傅哥对 Spring 框架有了非常深入的了解和认识,也体会了更多精妙的设计原则和设计模式。彻底从实现上搞清楚:上下文如何管理、Aware 如何通过 SPI 机制处理感知对象通知、切面拦截如何设计、三级缓存循环依赖如何实现、ORM 框架怎么整合到 Spring,等等。


手写 Spring

独乐不如众乐,小傅哥把手动实现简单版 Spring 框架的内容编写成书,希望帮助更多的研发人员学习 Spring 源码,编写出有价值的源码设计方案。

从此,你多了一段“手写 Spring”项目的学习经历:具备了复杂源码的架构设计能力、吸收了复杂场景分治和抽象的思想、我就是学会了复杂结构中设计模式的运用。你手写过 Spring 的代码,以后路,你可以横着走! 



内容简介

本书共 21 章。

  • 第 1~10 章:主要介绍 IOC 容器,逐步完善一个简单的 Spring Bean 容器的相关功能,引入实例化策略、注入属性和依赖、设计应用上下文、处理 Bean 对象的生命周期,以及实现感知容器对象的监听等。

  • 第 11~12 章:主要介绍 AOP 切面,基于 JDK、Cglib 的动态代理、方法拦截、切点表达式等技术,将代理与 Spring Bean 容器整合,提供 AOP 切面功能。

  • 第 13~17 章:扩展简单版 Spring 框架的自动化功能,完成自动扫描注册、注解和代理注入,以及通过三级缓存处理对象的循环依赖等功能。

  • 第 18~21 章:基于简单实现的 Spring 框架整合 JDBC、事务的功能,开发一个简单版的 ORM 框架,并将 ORM 框架整合到 Spring Bean 容器中,介绍自定义代理对象的扫描和注册过程。

本书主要通过渐进式开发功能模块,以实现开发整个 Spring 框架的核心源码。

首先,每章开头都会列出难度和重点;然后,正文中会介绍要处理的问题、具体设计和实现代码;最后,给出测试验证和本章总结。


地图:框架全貌

读者在学习的过程中,可以参考书中 Spring 框架地图,通过全局的视角,可以更好地理解和学习 Spring 框架的设计与开发。



业内专家推荐



心似平原走马

若焰晨星,无量黎明。绽燃何须喧闹,灿烂不惧寂寥。我就愿意做一个心似平原走马的人,也更享受那份安静的执着。我也希望以我的经验分享给这条路上的同行。




手写spring二维码.png

69 元包邮到家

首发限时特惠,限量 100 本


抽奖赠书

按以下方式与博文菌互动,即有机会获赠本书

活动方式:在本文下方留言,说出你学习 Spring 的故事参与活动,届时会在参与的小伙伴中抽取 1 名幸运鹅!

活动时间:截至 11 月 11 日开奖。

快快拉上你的小伙伴参与进来吧~~

用户头像

还未添加个人签名 2019-10-21 加入

还未添加个人简介

评论

发布
暂无评论
一本书,带你走出Spring新手村_博文视点Broadview_InfoQ写作社区