1.Spring揭秘-框架结构

1.Spring揭秘-框架结构

萤火虫 830 2021-09-04

Spring框架

image-20201114202020163

​ 组成整个Spring框架的各种服务实现被划分到了多个相互独立却又相互依赖的模块当中。正如我 们在图1-1中所见到的那样,这些模块组成了Spring生命之树的枝和干,说白了也就是它们组成了Spring 框架的核心骨架。抓住了这副骨架,也就抓住了Spring框架的学习主线。

​ 整个Spring框架构建在Core核心模块之上,它是整个框架的基础。在该模块中,Spring为我们提供 了一个IoC容器(IoC Container)实现,用于帮助我们以依赖注入的方式管理对象之间的依赖关系。对 Spring的IoC容器的介绍将成为我们此次Spring之旅的第一站。除此之外,Core核心模块中还包括框架 内部使用的各种工具类(如果愿意,我们也可以在框架之外使用),比如Spring的基础IO工具类等, 这些基础工具类我们也会在合适的地方介绍。

​ 沿着Spring生命之树往上左序遍历,我们将来到AOP模块。该模块提供了一个轻便但功能强大的 AOP框架,让我们可以以AOP的形式增强各POJO的能力,进而补足OOP/OOSD之缺憾。Spring的AOP 框架符合AOP Alliance规范,采用Proxy模式构建,与IoC容器相结合,可以充分显示出Spring AOP的 强大威力。我们将在了解了Spring的IoC容器的基础上,详细讲述Spring AOP这一部分。

​ 继续上行,Spring框架在Core核心模块和AOP模块的基础上,为我们提供了完备的数据访问和事 务管理的抽象和集成服务。在数据访问支持方面,Spring对JDBC API的最佳实践极大地简化了该API 的使用。除此之外,Spring框架为各种当前业界流行的ORM产品,比如Hibernate、iBATIS、Toplink、 JPA等提供了形式统一的集成支持。Spring框架中的事务管理抽象层是Spring AOP的最佳实践,它直接 构建在Spring AOP的基础之上,为我们提供了编程式事务管理和声明式事务管理的完备支持。这些服 务极大地简化了日常应用开发过程中的数据访问和事务管理工作。在学习完这两部分内容之后,相信 读者将会有切身的体会。

​ 为了简化各种Java EE服务(像JNDI、JMS以及JavaMail等)的使用,Spring框架为我们提供了针 对这些Java EE服务的集成服务。在Spring的帮助下,这些Java EE服务现在都变得不再烦琐难用。因为 相关的Java EE服务较多,我们将会选择合适的几种介绍Spring框架给予它们的支持。随着航空航天技 术的发展,我们现在可以从地球上发送飞船去访问其他星球,使用Spring框架构建的基于POJO的应用 程序如果也需要远程访问或者公开一些服务的话,Spring的Remoting框架将帮助它完成这一使命。 Spring的Remoting框架和Spring对其他Java EE服务的集成将分别在不同的章节中介绍。

​ 最后要提到的就是Web模块。在该模块中,Spring框架提供了一套自己的Web MVC框架,职责分 明的角色划分让这套框架看起来十分地“醒目”。我们将为Spring的Web MVC框架单独开辟一块“领 地”进行讲解。在那一部分中,读者可以充分领略Web MVC框架的魅力。Spring的Portlet MVC构建在 Spring Web MVC之上,延续了Spring Web MVC的一贯风格。本书不会对其做详细介绍,如果需要, 可以参考文献中的有关参考书籍。Spring Web MVC并不排斥现有的其他Web框架,像Struts、WebWork 以及JSF等;Spring的Web框架都为它们提供了集成支持。除此之外,像Web开发中可能牵扯的各种视 图(View)技术,Spring Web框架更是给予了足够的重视。

​ 就像一棵树必须依赖强大的根基才能生长繁盛一样,Spring框架内的各个模块也是如此。理论上 来说,上层的模块需要依赖下层的模块才能正常工作,这就是为什么说这些模块是相互依赖的。不过, 近乎处于同一水平线的各个模块之间却可以认为是相互独立的,彼此之间没什么瓜葛。从这个角度看, 这些模块之间的相互独立一说也是成立的。

​ 以上就是对整个Spring框架的总体介绍。在开始愉快的Spring旅程之前,我想带大家先逛一逛 “Spring大观园”,这样,大家就会发现即将开始的Spring之旅更加值得期待。

​ 我们学习源码要先找到入口,找到根基,先从最最基础的开始,你还不知道ioc就想要去看明天aop的源码这是不现实的,面试官的问题也绝对不会是仅仅是你知道代码怎么写就可以了,而是需要你能深刻理解,当时的作者是如何思考,达到自己可以复刻出优秀的代码。

​ 本文为《Spring揭秘》读书笔记,用于提炼文中知识点与去除不重要的文字,我会尽力做到简单与简洁方便查阅与记忆,达到以后想起某个点的时候方便快速回顾。最后感谢作者的分享。