一、为什么需要学习Spring?
Spring由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,Spring就是项目从配置到安全,从web应用到大数据——无论应用程序的基础设施需求是什么,都有一个Spring Project来帮助您构建它。——spring在设计上是模块化的。Spring框架的控制反转(loC)和依赖注入(DI)特性为一系列广泛的特性和功能提供了基础。
只要学习Java就一定会用到Spring,Spring准确来说他更像是一个大家族,家族当中有很多成员,例如Spring Framework、SpringBoot、SpringCloud、Spring Security…还有很多,具体的可以看官网https://spring.io/projects,Spring Framework就是Spring当中的核心框架,也可以称之为基础框架,任何框架都是和他来做集成。而我们要彻底掌握的也就是Spring Framework。
Spring一词在不同的语境中有不同的含义,它可以用来指代Spring Framework项目本身,这是一切开始的地方。随着时间的推移,其他Spring项目都构建在Spring框架之上。大多数情况下,当人们说“Spring”时,他们指的是整个家族的项目,而并不是Spring Framework。
二、Spring设计理念
当你学习一个框架时,了解它做了什么固然重要,但更重要的是了解它所遵循的原则。以下是Spring框架的指导原则:
- 在每一层都提供选择。Spring允许你尽可能推迟设计决策。例如,你可以通过配置来切换持久性提供者,而无需更改代码。这同样适用于许多其他基础设施问题和与第三方API的集成。(这一理念我的理解是高度可配置化)
- 适应多样化的观点。
- Spring拥抱灵活性,对如何完成事情没有偏见。它支持不同观点的广泛应用需求。
- 保持强大的向后兼容性。
- Spring的演变经过了精心管理,以尽量减少版本之间的破坏性更改。Spring支持精心挑选的一系列JDK版本和第三方库,以方便维护和依赖Spring的应用程序和库。
- 关注API设计。
- Spring团队投入了大量的思考和时间来制作直观且跨多个版本和多年都能保持稳定的API。
- 为代码质量设定高标准。
- Spring框架非常注重有意义、当前且准确的javadoc。它是少数几个可以声称代码结构清晰、包之间没有循环依赖的项目之一。
三、Spring学习之追本溯源
这里的追本溯源不是单纯了解Spring的历史就可以了。现在的Spring框架代码量很大,类的关系很难梳理。所以我从Spring的最初的版本开始梳理Spring的框架逻辑,同时也能了解Spring发展过程。
例如Spring的早起版本是不支持注解的,只能XML配置。后面是如何增加注解的支持?类的扩展是怎么扩展的?这些在我们的日常开发中都会遇到,比如新增一个功能,我们可以学习Spring的接口设计方式。