Spring框架介绍
介绍
在 Enterprise Java Beans (EJB) 出现之前, Java开发人员需要使用 JavaBeans 来创建 Web 应用程序。尽管 JavaBeans 帮助开发了用户界面 (UI) 组件,但它们无法提供开发健壮和安全的企业应用程序所需的服务,例如事务管理和安全性。 EJB 的出现被视为解决这个问题的一种方法 EJB 扩展了Java组件,例如 Web 和企业组件,并提供有助于企业应用程序开发的服务。然而,使用 EJB 开发企业应用程序并不容易,因为开发人员需要执行各种任务,例如创建 Home 和 Remote 接口以及实现生命周期回调方法,这导致为 EJB 提供代码的复杂性由于这种复杂性,开发人员开始寻找一种更简单的方法来开发企业应用程序。
Spring 框架已成为所有这些复杂问题的解决方案。该框架使用各种新技术,如面向切面编程 (AOP)、普通Java对象 (POJO) 和依赖注入 (DI),来开发企业应用程序,从而消除由于使用 EJB 开发企业应用程序所涉及的复杂性,Spring 是一个开源轻量级框架,它允许Java EE 7 开发人员构建简单、可靠和可扩展的企业应用程序。该框架主要侧重于提供各种方法来帮助您管理业务对象。与Java数据库连接 (JDBC)、JavaServer Pages (JSP) 和Java Servlet 等经典Java框架和应用程序编程接口 (API) 相比,它使 Web 应用程序的开发更加容易。
Spring 框架可以被认为是子框架的集合,也称为层,例如 Spring AOP。 Spring 对象关系映射(Spring ORM)。 Spring Web Flow 和 Spring Web MVC。在构建 Web 应用程序时,您可以单独使用这些模块中的任何一个。这些模块也可以组合在一起以在 Web 应用程序中提供更好的功能。
Spring 框架的特点
Spring 框架的 IoC、AOP 和事务管理等特性使其在框架列表中独树一帜。 Spring框架的一些最重要的特性如下:
- IoC 容器:
指在运行时使用 DI 或 IoC 模式在类中隐式提供对象引用的核心容器。此模式充当服务定位器模式的替代方案。 IoC 容器包含处理应用程序对象配置管理的汇编代码。
Spring 框架提供了两个包,即 org.springframework.beans 和 org.springframework.context,它们有助于提供 IoC 容器的功能。 - 数据访问框架:
允许开发人员使用持久性 API,例如 JDBC 和 Hibernate,将持久性数据存储在数据库中。帮助解决开发者的各种问题,如如何与数据库连接交互,如何确保连接关闭,如何处理异常,如何实现事务管理。访问整个应用程序中的持久性数据的代码。 - Spring MVC 框架:
允许您构建基于 MVC 架构的 Web 应用程序。用户发出的所有请求首先经过控制器,然后分派到不同的视图,即不同的 JSP 页面或 Servlet。 Spring MVC 框架的表单处理和表单验证功能可以轻松地与所有流行的视图技术集成,例如 ISP、Jasper Report、FreeMarker 和 Velocity。 - 交易管理:
帮助处理应用程序的事务管理而不影响其代码。该框架为应用服务器管理的全局事务和使用 JDBC Hibernate、 Java数据对象 (JDO) 或其他数据访问 API 管理的本地事务提供Java事务 API (JTA)。它使开发人员能够在 Spring 的声明式和编程式事务管理的基础上对各种事务进行建模。 - 春季网络服务:
基于Java类生成 Web 服务端点和定义,但很难在应用程序中管理它们。为了解决这个问题,Spring Web Service 提供了基于分层的方法,这些方法由可扩展标记语言 (XML) 解析(读取和操作 XML 的技术)单独管理。 Spring 为将传入的 XML 消息请求传输到对象提供了有效的映射,并且开发人员可以轻松地在两台机器之间分发 XML 消息(对象)。 - JDBC抽象层:
帮助用户以简单有效的方式处理错误。当这个抽象层在 Web 应用程序中实现时,可以减少 JDBC 编程代码。该层处理 DriverNotFound 等异常。所有 SQLExceptions 都被转换为 DataAccessException 类。 Spring 的数据访问异常不是 JDBC 特定的,因此数据访问对象 (DAO) 不仅仅绑定到 JDBC。 - Spring TestContext 框架:
为 Spring 应用程序提供单元和集成测试工具。此外,Spring TestContext 框架提供了特定的集成测试功能,例如测试夹具的上下文管理和缓存 DI,以及具有默认回滚语义的事务测试管理。
Spring框架的演进
Spring Framework 于 2004 年首次发布。此后进行了重大的重大修订,例如 Spring 2.0 提供了 XML 命名空间和 AspectJ 支持,Spring 2.5 提供了注解驱动的配置,Spring 3.0 提供了基于 Java 的 @Configuration 模型。 Spring框架的最新版本是4.0。它在发布时支持Java 8 和Java EE 7 技术。尽管您仍然可以将 Spring 与较旧版本的Java一起使用,但最低要求仅限于Java SE 6。Spring 4.0 还支持Java EE 7 技术,例如Java message service (JMS) 2.0、 Java persistence API (JPA) 2.1、 Bean 验证 1.1、servlet 3.1 和 JCache。
Spring 框架架构
Spring 框架由七个模块组成,如上图所示。这些模块是 Spring Core、Spring AOP、Spring Web MVC、Spring DAO、Spring ORM、Spring 上下文和 Spring Web 流。这些模块提供了不同的平台来开发不同的企业应用程序;例如,您可以使用 Spring Web MVC 模块来开发基于 MVC 的应用程序。
Spring 框架模块
- 弹簧核心模块:
Spring Core 模块是 Spring 框架的核心组件,提供 IoC 容器 Spring 容器有两种实现方式,即 bean 工厂和应用上下文。 Bean 工厂是使用 org.springframework.beans.factory.BeanFactory 接口定义的,并充当 bean 的容器。 Bean 工厂容器允许您将依赖项的配置和规范与程序逻辑分离。在 Spring 框架中,Bean 工厂充当中央 IoC 容器,负责实例化应用程序对象。它还配置和组装这些对象之间的依赖关系。 BeanFactory 接口有许多实现。 XmlBeanFactory 类是 BeanFactory 接口最常见的实现。这允许您表达对象以组成您的应用程序并消除应用程序对象之间的相互依赖关系。 - Spring AOP 模块:
与将应用程序分解为对象层次结构的面向对象编程 (OOP) 类似,AOP 将程序分解为方面或关注点。 Spring AOP 模块允许您在 Spring AOP 中的 Spring 应用程序中实现关注点或方面,这些方面是使用 @Aspect 注释的常规 Spring bean 或常规类。这些方面有助于应用程序的事务管理、日志记录和故障监控。例如,银行操作中需要交易管理,例如将金额从一个账户转移到另一个 Spring AOP 模块提供了一个可以应用于交易 API 的交易管理抽象层。 - 弹簧 ORM 模块:
Spring ORM 模块用于在应用程序中访问数据库中的数据。它提供了用于使用 JDO、Hibernate 和 iBatis 操作数据库的 API。 Spring ORM 支持 DAO,它提供了一种方便的方式来构建以下基于 DAO 的 ORM 解决方案:- 简单的声明式事务管理
- 透明的异常处理
- 线程安全的轻量级模板类
- DAO 支持类
- 资源管理
- Spring Web MVC 模块:
Spring 的 Web MVC 模块实现了用于创建 Web 应用程序的 MVC 架构。它将 Web 应用程序的模型和视图组件的代码分开。在 Spring MVC 中,当从浏览器生成请求时,它首先进入 DispatcherServlet 类(Front Controller),该类使用一组处理程序映射将请求分派给控制器(SimpleFormController 类或 AbstractWizardformController 类)。控制器提取并处理嵌入在请求中的信息,并将结果以模型对象的形式发送给 DispatcherServlet 类。最后,DispatcherServlet 类使用 ViewResolver 类将结果发送到视图,视图将这些结果显示给用户。 - Spring Web 流模块:
Spring Web Flow 模块是 Spring Web MVC 模块的扩展。 Spring Web MVC框架提供了表单控制器,例如SimpleFormController类和AbstractWizardFormController类,来实现预定义的工作流。 Spring Web Flow 有助于定义管理 Web 应用程序不同页面之间工作流的 XML 文件或Java类。 Spring Web Flow 单独分发,可通过 http://www.springframework.org 网站下载。
以下是 Spring Web Flow 的优点:- 通过在 XML 文件中定义 Web 流,可以清楚地提供应用程序不同 UI 之间的流。
- Web 流定义可帮助您将应用程序虚拟地拆分为不同的模块,并在多种情况下重用这些模块。
Spring Web Flow 生命周期可以自动管理
- Spring Web DAO 模块:
Spring 框架中的 DAO 包通过使用 JDBC、Hibernate 或 JDO 等数据访问技术来提供 DAO 支持。该模块通过消除提供繁琐的 JDBC 编码的需要引入了 JDBC 抽象层。它还提供程序化和声明性事务管理类。 Spring DAO 包支持异构Java数据库连接和 O/R 映射,这有助于 Spring 使用多种数据访问技术。为了方便快捷地访问数据库资源,Spring 框架提供了抽象的 DAO 基类。 Spring 框架支持的每种数据访问技术都有多种实现。例如,在 JDBC 中,JdbcDaoSupport 类及其方法用于访问 DataSource 实例和预配置的 JdbcTemplate 实例。您需要简单地扩展 JdbcDaoSupport 类并在应用程序上下文配置中提供到实际 DataSource 实例的映射,以访问基于 DAO 的应用程序。 - Spring 应用程序上下文模块:
Spring Application 上下文模块基于 Core 模块。应用上下文 org.springframework.context.ApplicationContext 是 BeanFactory 的一个接口。该模块从 org.springframework.beans 包中派生其功能,还支持国际化 (I18N)、验证、事件传播和资源加载等功能。 Application 上下文实现 MessageSource 接口并向应用程序提供消息传递功能。
如何下载和安装 Spring 框架
- 要下载 Spring Repository,您需要访问 https://repo.spring.io/release/org/springframework/spring/。在这个网站上,你会发现不同的 Spring 框架版本。您必须单击最新的框架版本。在这里,您将找到三个文件:
- spring-framework-5.1.4.RELEASE-dist.zip
- spring-framework-5.1.4.RELEASE-docs.zip
- spring-framework-5.1.4.RELEASE-schema.zip
现在您必须单击“spring-framework-5.1.4.RELEASE-dist.zip”以便下载。
- 安装时,需要解压 C 盘中的“spring-framework-5.1.4.RELEASE-dist.zip”文件。现在您可以在 Spring 框架中运行您的应用程序。