查看原文
其他

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

程序猿DD 2022-11-18

IOCAOPSPI一样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 框架的设计与开发。

业内专家推荐



心似平原走马

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

69元包邮到家

首发限时特惠,限量100本

抽奖赠书

本次福利将送出《手写Spring渐进式源码实践* 5本

福利模块改版啦!

为避免撸羊毛的用户参与抽奖,抢占真实用户的中奖,现在将把抽奖方式切换到spring4all.com网上通过积分参与

本次抽奖地址:http://spring4all.com/forum-post/1808.html

如何获取积分?只需要日常登录spring4all.com,参与:- 每日签到- 分享经验- 提问交流- 分享工具、资源- 回帖帮助他人均可获得积分!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存