Spring 简明教程

Spring Framework - Overview

Spring 是一个最受欢迎的应用程序开发框架,用于企业级 Java。全世界数百万开发人员使用 Spring Framework 创建高性能、易于测试的代码,可以重复使用。

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

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

Spring Framework 的核心特性可以用在 Java 应用程序的开发中,不过有一些扩展是在 Java EE 平台基础之上构建 Web 应用程序的。Spring 框架的目标是让 J2EE 开发用起来更轻松,并通过启用基于 POJO 的编程模型来提升良好的编程实践。

Benefits of Using the Spring Framework

以下是使用 Spring Framework 的若干重要优势清单

  1. Spring 让开发人员能够使用 POJO 开发企业级应用程序。只使用 POJO 的优势在于,你不需要像应用程序服务器之类的 EJB 容器产品,但你有权只使用强大的 servlet 容器,例如 Tomcat 或一些商业产品。

  2. Spring 按照模块化方式组织。即使包和类的数量很大,你只需要关注自己需要的那些,而忽略剩下的。

  3. Spring 不会重新发明轮子,相反,它真正利用了现有的技术,如多个 ORM 框架、日志框架、JEE、Quartz 和 JDK 计时器,以及其他视图技术。

  4. 测试用 Spring 写入的应用程序很简单,因为依赖于环境的代码移到了这个框架中。此外,通过使用 JavaBean 类型的 POJO,更易于使用依赖项注入来注入测试数据。

  5. Spring 的 Web 框架是一个设计良好的 Web MVC 框架,它为 Struts 或其他过度设计或不受欢迎的 Web 框架之类的 Web 框架提供了极佳的替代方案。

  6. Spring 提供一个便利的 API,用于将特定技术的异常(例如 JDBC、Hibernate 或 JDO 生成的异常)转化为一致的、未经检查的异常。

  7. 轻量型 IoC 容器倾向于轻量,尤其是与 EJB 容器相比。这有益于在内存和 CPU 资源有限的计算机上开发和部署应用程序。

  8. Spring 提供一个一致的事务管理界面,该界面可以向下扩展到本地事务(例如,使用单个数据库),并向上扩展到全局事务(例如,使用 JTA)。

Dependency Injection (DI)

最能与 Spring 联系起来的的技术是反转控制 Dependency Injection (DI) 的特性。 Inversion of Control (IoC) 是一个通用概念,可以使用多种不同的方式来表达。依赖关系注入只是反转控制的一个具体示例。

在编写复杂的 Java 应用程序时,应用程序类与其它的 Java 类应该尽可能独立,以提高在单元测试时独立于其他类来重复利用和测试这些类的可能性。依赖关系注入有助于将这些类粘合在一起,并同时保持它们的独立性。

依赖关系注入到底是什么?让我们分别看一下这两个词。这里的依赖部分转换成了两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看一下第二部分,注入。它的全部含义是,类 B 将由 IoC 注入到类 A 中。

依赖关系注入可以通过向构造函数传递参数或通过使用 setter 方法而在构建后执行。由于依赖关系注入是 Spring 框架的核心,因此我们将在一个单独的章节中使用相关的示例来解释这个概念。

Aspect Oriented Programming (AOP)

Spring 的一个关键组件是 Aspect Oriented Programming (AOP) 框架。跨越应用程序多个点的功能被称为 cross-cutting concerns ,这些交叉关注点在概念上与应用程序的业务逻辑是分开的。包括日志记录、声明式事务、安全、缓存等在内,有各种常见良好的方面示例。

面向对象编程中的模块化关键单元是类,而在面向方面编程中模块化的单元是方面。依赖关系注入有助于将应用程序对象相互解耦,而面向方面编程有助于将交叉关注点与它们影响的对象解耦。

Spring 框架的 AOP 模块提供面向切面的编程实现,使你可以定义方法拦截器和切入点,以便按部就班地解耦应该分离的功能的实现代码。我们将在一个单独的章节中进一步讨论 Spring AOP 的概念。