Spring 框架 - 概述

Spring 是最流行的企业 Java 应用程序开发框架。 全球数以百万计的开发人员使用 Spring 框架来创建高性能、易于测试和可重用的代码。

Spring 框架是一个开源的 Java 平台。 它最初由 Rod Johnson 编写,并于 2003 年 6 月在 Apache 2.0 许可下首次发布。

在大小和透明度方面,Spring 是轻量级的。 Spring 框架的基本版本约为 2MB。

Spring 框架的核心特性可用于开发任何 Java 应用程序,但也有一些扩展可用于在 Java EE 平台之上构建 Web 应用程序。 Spring 框架旨在通过启用基于 POJO 的编程模型使 J2EE 开发更易于使用并促进良好的编程实践。


使用 Spring 框架的好处

以下是使用 Spring 框架的几个巨大好处的列表 −

  • Spring 使开发人员能够使用 POJO 开发企业级应用程序。 仅使用 POJO 的好处是您不需要 EJB 容器产品(例如应用程序服务器),但您可以选择仅使用健壮的 servlet 容器(例如 Tomcat 或某些商业产品)。

  • Spring 以模块化方式组织。 即使包和类的数量很多,您也只需要担心您需要的,而忽略其余的。

  • Spring 并没有重新发明,而是真正利用了一些现有的技术,如几个 ORM 框架、日志框架、JEE、Quartz 和 JDK 计时器以及其他视图技术。

  • 测试使用 Spring 编写的应用程序很简单,因为依赖于环境的代码已移至此框架。 此外,通过使用 JavaBeanstyle POJO,更容易使用依赖注入来注入测试数据。

  • Spring 的 web 框架是一个设计良好的 web MVC 框架,它为 Struts 等 web 框架或其他过度设计或不太流行的 web 框架提供了一个很好的替代方案。

  • Spring 提供了一个方便的 API 来将特定于技术的异常(例如,由 JDBC、Hibernate 或 JDO 抛出)转换为一致的、未经检查的异常。

  • 轻量级 IoC 容器往往是轻量级的,例如,与 EJB 容器相比时尤其如此。 这有利于在内存和 CPU 资源有限的计算机上开发和部署应用程序。

  • Spring 提供了一个一致的事务管理接口,可以缩小到本地事务(例如使用单个数据库)并扩展到全局事务(例如使用 JTA)。


依赖注入 (DI)

Spring 最受认同的技术是控制反转的依赖注入 (DI) 风格。 Inversion of Control (IoC) 控制反转是一个通用概念,可以用多种不同的方式表达。 依赖注入只是控制反转的一个具体例子。

在编写复杂的 Java 应用程序时,应用程序类应尽可能独立于其他 Java 类,以增加重用这些类的可能性,并在单元测试时独立于其他类对其进行测试。 依赖注入有助于将这些类粘合在一起,同时保持它们的独立性。

究竟什么是依赖注入? 我们分别来看这两个词。 这里依赖部分转化为两个类之间的关联。 例如,A 类依赖于 B 类。现在,我们来看第二部分,注入。 这意味着,B 类将被 IoC 注入到 A 类中。

依赖注入可以通过将参数传递给构造函数的方式发生,也可以通过使用 setter 方法的构造后发生。 由于依赖注入是 Spring 框架的核心,我们将在单独的章节中用相关示例解释这个概念。


面向方面的编程(AOP)

Spring 的关键组件之一是面向方面编程 (AOP) 框架。 跨越应用程序多个点的功能称为横切关注点,这些横切关注点在概念上与应用程序的业务逻辑分开。 有各种常见的好例子,包括日志记录、声明式事务、安全性、缓存等。

OOP 中模块化的关键单元是类,而 AOP 中模块化的单元是方面。 DI 可帮助您将应用程序对象彼此分离,而 AOP 可帮助您将横切关注点与它们影响的对象分离。

Spring 框架的 AOP 模块提供了面向方面的编程实现,允许您定义方法拦截器和切入点,以清晰地解耦实现应该分离的功能的代码。 我们将在单独的章节中讨论更多关于 Spring AOP 的概念。