首页 > 编程笔记 > Java笔记 阅读:53

Spring Framework是什么(非常详细)

回顾 Spring Framework 的历史已经有二十余载,从最初既烦琐又复杂的 EJB 开发到如今使用 Spring Framework 和 Spring Boot 就能快速搭建和开发应用,Spring 家族可谓功不可没。

如今的 Java EE 开发中,掌握 Spring 已经成为一个开发者的必备技能,业界很有名的“Spring全家桶”也是目前主流的技术体系之一。

了解一门技术,首先要知道它是什么、都有什么、能做什么,而了解这些内容的最直接方式之一是借助官方网站和文档。从 Spring 的官方网站中找到 Spring Framework 的项目主页,可以发现如下描述:

Spring Framework 为任何类型的部署平台上的基于 Java 的现代企业应用程序提供了全面的编程和配置模型。

Spring 的一个关键要素是在应用程序级别提供基础架构支持:Spring 专注于企业应用程序的“脚手架”,以便团队可以专注于应用程序级别的业务逻辑,而不必与特定的部署环境建立不必要的关联。

上述描述的内容中包含诸多要素,下面对其中的一些关键词做基本解释,方便读者更好地理解这段话的含义:
另外,从网络上流传比较多的、认可度相对较高的概述中,我们也能发现一些新的关键词:

Spring Framework 是一个分层的、Java SE/Java EE 的一站式轻量级开源框架,以 IOC 和 AOP 为内核,提供表现层、持久层、业务层等领域的解决方案,同时还提供了整合第三方开源技术的能力。

Spring Framework 是一个 Java EE 编程领域的轻量级开源框架,它是为了解决企业级编程开发中的复杂性、实现敏捷开发的应用型框架。Spring Framework 是一个容器框架,它集成了各个类型的工具,通过核心的IOC容器实现了底层的组件实例化和生命周期管理。

Spring Framework 是一个开源的容器框架,核心是 IOC 和 AOP,它为简化企业级开发而生。Spring Framework 有诸多优良特性(非侵入、容器管理、组件化、轻量级、一站式等)。

观察、品味这些概述,并且与官方文档中的描述进行比对,可以提取如下几个关键词:
综合以上的官方权威概述和开发者的经验总结,笔者也试着提取和总结一个尽可能表述完整且精简的概述:

Spring Framework 是一个开源的、松耦合的、分层的、可配置的一站式企业级 Java 开发框架,它的核心是 IOC 与 AOP,它可以更容易地构建企业级 Java 应用,并且可以根据应用开发的组件需要,整合对应的技术。

简单解释一下如此概括的要点:
总的来看,Spring Framework 是一个功能极其强大的基础型框架,其设计考虑之周全,决定了几乎任何 Java 应用都可以从 Spring Framework 中受益。

Spring Framework的组成结构

Spring Framework 是一个分层的架构,它包含一系列核心要素,并大体分为若干模块。以下简单描述这些核心模块的含义及作用。

1) IOC及IOC容器

Spring Framework 的底层核心是一个容器,由于其充分体现了 IOC 的特性,因此又被称为 IOC 容器。

IOC 部分包含 Spring Framework 最基础的核心代码 core、与组件对象相关的 beans、与容器上下文相关的 context,以及支持 SpEL 表达式相关的 expression 模块。

整个 IOC 模块是 Spring Framework 的基础,后续的所有模块都建立在此之上。

2) AOP

AOP 是基于面向对象编程(OOP)的补充,它可以支持开发者定义一些方法的切入点和增强器,用于将一些通用逻辑代码与业务功能代码相分离,降低其耦合度。

由于 AOP 建立在 IOC 模块的基础上,因此能够充分利用 IOC 容器和 Bean 组件的特性,使得容器中所管理的 bean 对象都可以支持 AOP。

3) 数据访问

对绝大部分的应用程序而言,主要关注的问题就是与数据库、数据存储的访问和操作。

Spring Framework 没有局限于针对某一种数据存储类型的场景做文章,而是以一个更高的层次,通过抽取 jdbc、orm、tx 等模块,制作了一套访问关系型数据库的通用抽取模板,通过引入模板的设计和思想将数据访问变得非常简单。

此外,借助 AOP 的思想,Spring Framework 还提供了声明式事务等功能。

4) Web

Spring Framework 在整合 Web 环境中也有对应的 WebMvc 和 WebFlux 技术实现,通过引入不同的模块,可以实现基于传统 Servlet API 的 WebMvc 开发,或者完全不依赖 Servlet API 的 WebFlux 实现响应式 Web 开发;另外通过引入不同的页面和模板引擎,可以使得 Spring Framework 支持多种视图层技术。

此外,基于 HTML5 规范的 WebSocket 也在 Spring Framework 4.0 中予以支持。

5) 测试

测试是企业应用开发不可或缺的一部分,Spring Framework 通过整合不同的单元测试框架,可以实现简单高效的代码单元测试;借助 IOC 容器和 Web 相关特性支持,可以在开发 Web 项目中实现集成测试。

相关文章