在 5 分钟或更短时间内解释 Spring 框架

Spring 框架是一个功能强大的开源 Java 应用开发框架,它可以帮助开发者更便捷地构建稳健且高效的应用。

开源意味着任何人都可以自由地访问、修改和共享相关资源,因为其源代码是公开且免费提供的。

开源的应用框架,可以理解为一组由软件开发者创建的、用于软件开发的模板。这些模板种类繁多,旨在满足不同的开发需求,例如创建用户界面、网站以及基础的软件应用。

如果你是应用开发的新手,那么从 Spring 框架入手可能会是一个不错的选择。本文将介绍 Spring 框架是什么,以及如何使用它。

什么是 Spring 框架?

Spring 框架是开发者常用的一个开源框架,用于创建企业级的 Java 应用。该框架由 Rod Johnson 创建,并在 2003 年以 Apache 2.0 许可发布。

部分程序员可能会对 Java 有所抱怨,认为创建基本应用的过程过于繁琐。Spring 框架的目标正是简化开发企业级 Java 应用的复杂流程,减少繁琐的步骤。

Spring 的应用领域非常广泛。因此,建议在深入了解其他基于 Spring 的项目(例如 Spring Boot、Spring GraphQL 和 Spring Cloud)之前,先充分理解 Spring 框架的基础概念。

为什么要使用 Spring 框架?

  • 灵活性强。 该框架提供了面向切面编程 (AOP)、依赖注入 (DI) 和普通 Java 对象 (POJO) 等多种技术。因此,你可以使用 Spring 实现各种不同的开发目标。
  • 速度快。 虽然集成了如此多的技术,Spring 框架仍然保持轻量级,这使得它成为创建可伸缩且健壮的企业级 Web 应用的理想选择。
  • 拥有强大的社区。 Spring 拥有一个多元化的社区,你可以信任这个社区会在你需要帮助时提供各种解决方案。
  • 安全性高。 Spring 以其安全措施而闻名,它会通过频繁的补丁来修复漏洞。 同时,它会持续监控第三方依赖项,以确保它们不会影响核心流程。
  • 生产力高。 Spring 框架简化了开发 Java 企业应用的体验。

Spring 的特性

支持面向切面编程

面向切面编程 (AOP) 为横切关注点提供了更高的模块化能力。AOP 有效地补充了面向对象编程。

AOP 中模块化的主要单元是横切关注点(Aspect)。因此,开发者可以创建声明式的企业服务和自定义切面。

控制反转 (IoC) 容器

IoC 容器提供了一种简化的 Java 对象管理和配置方法。该容器负责管理定义的 Java 对象的生命周期,显著提升了基于 Spring 的应用的可重构性。

控制反转通过依赖查找或依赖注入模式在运行时提供对象引用。IoC 容器自带配置管理所需的汇编代码。

数据访问框架

数据通信过程得以简化,因为 Spring 直接支持 Hibernate、JDBC 和 Java Persistence API (JPA),这些是 Java 中一些最流行的数据访问框架。该框架还为所有受支持的数据访问框架提供资源包装、异常处理和资源管理等功能。

Spring MVC 框架

开发者可以使用这个基于请求的框架来创建满足他们需求的自定义 MVC 实现。

DispatcherServlet 类的职责是处理用户的请求,并将它们转发到正确的控制器,这是 Spring MVC 的核心。因此,控制器可以处理请求、创建模型,并通过指定的视图向最终用户呈现信息。

支持多种测试框架

在开发基于 Spring 的应用时,你可以使用 Mock 对象、TestContext 框架或 Spring MVC 测试对其进行测试。

语言支持

Spring 框架支持 Groovy 和 Kotlin 语言。

Spring 架构

Spring 框架包含大约 20 个模块。这个框架的优点在于,你可以根据自己的需求选择合适的模块。这些模块被分为核心容器、AOP(面向切面编程)、数据访问/集成、Web、仪器和测试等几个部分。

图片来源:Spring.io

#1. 核心容器

Spring 框架的核心容器包含 Core、Beans、Context 和 Expression Language 模型。 这些模型在以下方面很有用:

  • 核心模块是框架的基础部分。你可以在核心模块中找到 IoC 和依赖注入功能。
  • Bean 模块以 BeanFactory 而著称,它是工厂模式的复杂实现。
  • Context 模块建立在 Core 和 Bean 模块之上。该模块继承了 Bean 模块的特性,但增加了对国际化的支持。
  • 表达式语言模块提供了一种强大的表达式语言,用于在运行时操作和查询对象图。

#2. 数据访问/集成

JDBC、ORM、OXM、JMS 和事务模块构成了数据访问/集成层。这些模块负责执行以下操作:

  • JDBC 模块拥有一个 JBDC 抽象层,它消除了编写繁琐的 JDBC 代码以及解析特定于数据库供应商的错误代码的需求。
  • ORM 是对一些流行的对象关系映射 API(如 JPA、JDO、Hibernate 和 iBatis)的集成层。
  • OXM 模块是一个抽象层,支持 XStream、JAXB、JiBX、Castor 和 XMLBeans 等对象/XML 映射实现。
  • Transaction 模块支持对实现特殊接口的类的声明式和编程式事务管理。
  • Java 消息服务 (JMS) 模块具有生成和使用消息的功能。

#3. AOP(面向切面编程)和检测

该模块自带符合 AOP Alliance 的面向切面编程实现,可以轻松地定义诸如方法拦截器之类的功能。另一方面,Instrumentation 模块为某些应用程序服务器提供类加载器和类检测支持。

#4. Web

Web、Web-Servlet、Web-Struts 和 Web-Portlet 模块构成了 Web 层。

  • Web 模块负责基本的面向 Web 的集成功能,例如多部分文件上传功能。
  • Web-Servlet 模块具有用于 Web 应用的 Spring MVC 实现。
  • Web-Portlet 模块反映了 Web-Servlet 模块的功能。Web-Portlet 模块提供了在 portlet 环境中使用的 MVC 实现。
  • Web-Socket 模块支持 Web 应用中服务器和客户端之间的双向通信。

#5. 测试

测试模块是 Spring 架构的最后一部分。 它是支持使用 TestNG 或 JUnit 测试 Spring 组件的模块。

安装 Spring 框架

检查是否安装了 Java

在了解 Spring 框架的工作原理之前,必须在你的电脑上安装 Spring。 Spring 文档提供了大量关于如何开始使用的资源,这些资源会根据你的操作系统有所不同。

在本例中,我们将使用基于 Linux 的 Ubuntu 20.04.5 操作系统。

在安装 Spring 之前,请确保你已使用以下命令安装了 Java:

java -version

如果你已经安装了 Java,你将会看到类似以下截图的输出:

如果你的电脑上没有 Java,你可以使用多种方法根据你的需求安装 Java。

安装 Spring 框架

正如 Spring 文档中指出的那样,有多种方法可以安装 Spring 框架。

在本例中,我们将使用 GVM(Groovy 环境管理器)。 你可以使用 GVMtool 获取 GVM 或直接在命令行中安装它。

安装 GVM 后,使用以下命令安装并检查是否安装了 Spring 框架:

gvm install springboot
spring --version

如果 Spring 已成功安装,你可能会看到如下所示的输出:

与 Spring 框架相关的重要术语

依赖注入

依赖注入是一种允许开发者在类之外创建独立对象的功能。DI 还允许用户以不同的方式将这些对象提供给类。

控制反转 (IoC)

IoC 是将部分程序或对象的控制权转移到框架或容器的概念。 在传统编程中,通常由我们的自定义代码调用库。 而 IoC 则允许框架(在本例中为 Spring)调用我们的自定义代码并控制程序的流程。

面向方面编程 (AOP)

AOP 是一种用于构建可应用于整个应用的通用且可重用例程的技术。 这种方法将诸如输入验证、日志记录和错误处理等可重复的任务与核心应用逻辑分离。

Spring 框架学习资源

#1. 使用 Spring Framework 5 进行响应式编程

这个 Spring 课程包含视频、文章和可下载资源。该课程讲授如何使用 Java 进行函数式编程、如何使用 Spring WebFlux 进行微服务,以及如何在 Spring Data MongoDB 中利用 Reactive 类型。

#2. Spring 框架大师班

Spring 框架大师班是一个付费课程,它讲授如何使用 Spring 框架开发 Java 项目。你将学习如何使用各种工具,例如 Spring Boot、JUnit 和 Mockito、Spring JDBC、Spring AOP 和 Hibernate。

#3. 简单步骤中的 Spring 框架

如果你想使用 Spring 框架创建端到端的 Java EE Web 应用,那么 Spring Framework In Easy Steps 课程是一个理想的高级课程。你将学习如何使用 Spring MVC 开发 Web 应用、如何使用 JQuery 和 Spring MVC 进行 Ajax 调用,以及如何使用 Spring JDBC 执行数据库操作等内容。

#4. Spring 框架 5

如果你想学习 Spring Framework 5、Spring Data MongoDB、Spring Boot 2、Spring MVC、Spring Data JPA 和 Hibernate,Spring Framework 5 课程是你的理想之选。该课程提供 57 小时的点播视频、13 篇文章和大量可下载资料。

作者的话

Java 仍然是当今世界最流行的编程语言之一。 尽管不断有新的语言出现,像 Spring 这样的框架为 Java 注入了新的活力,并扩展了它的用途。 因此,对 Java 工程师的需求可能会持续存在,因为他们需要维护遗留代码并创建新的应用。

结论

Spring 在 Java EE 框架中处于领先地位,希望通过本文,你现在对 Spring 框架是什么、它的特性、架构和工作流程都有了更深入的了解。当与其他的 Spring 项目相结合时,Spring 框架为开发者提供了适用于各种不同开发环境的多种开发工具。