1.2 Spring的模块

Spring为企业应用程序提供一站式服务。Spring是模块化的,允许应用按需引入各个模块。Spring提供的常用模块有核心容器层(Core Container)、数据访问层(Data Access)、Web应用层(Web Access)。除此之外,Spring还包括AOP、Aspects、Instrumentation、Messaging和Test。Spring的模块如图1-2所示。下面对Spring中各个核心的模块做简单的介绍。

图1-2 Spring的模块

1.2.1 核心容器层

核心容器层由Spring-Beans、Spring-Core、Spring-Context和SpEL(Spring Expression Language,Spring表达式语言)等模块组成。

1.Spring-Beans

Spring-Beans模块基于工厂模式实现对象的创建。Spring-Beans通过XML配置文件实现了声明式的对象管理,将对象之间复杂的依赖关系从实际编码逻辑中解耦出来。

2.Spring-Core

Spring-Core模块是Spring的核心功能实现,具体包括控制反转和依赖注入。所谓依赖注入,是指在一个Bean实例中引用另外一个Bean实例时,Spring容器会自动创建其所依赖的Bean实例,并将该Bean实例注入(传递)到对应的Bean中。

3.Spring-Context

Spring-Context模块是在Spring-Beans和Spring-Core模块的基础上构建起来的。Spring-Context模块继承自Spring-Beans模块,并且添加了国际化、事件传播、资源加载和透明地创建上下文等功能。

同时,Spring-Context模块提供了一些J2EE的功能,比如EJB、JMX和远程调用等。ApplicationContext接口是Spring-Context模块操作Bean的入口。

Spring-Context-Support提供了将第三方库集成到Spring-Context的支持,比如缓存(EhCache、Guava、JCache)、邮件(JavaMail)、调度(CommonJ、Quartz)和模板引擎(FreeMarker、JasperReports、Velocity)等。

4.SpEL

SpEL模块提供了丰富的表达式语言支持,用于在运行过程中查询和操作对象实例。SpEL在JSP 2.1表达式语言规范的基础上进行了扩展,支持set方法、get方法、属性赋值、方法调用、访问数组集合、索引内容、逻辑算术运算、命名变量、基于名称在Spring IoC容器检索对象,同时支持列表的投影、选择和聚合等功能。

1.2.2 数据访问层

数据访问层包括JDBC、ORM、OXM、JMS和事务处理模块。它们的术语描述如表1-1所示。

表1-1 Spring数据访问层的术语描述

1.JDBC

JDBC模块提供了JDBC抽象层。Spring持久化层基于JDBC抽象层实现了在不同数据库之间灵活切换,而不用担心不同数据库之间SQL语法的不兼容。

2.ORM

ORM模块提供了对象关系映射API的集成,包括JPA(Java Persistence API)、JDO(Java Data Object)和Hibernate等。基于该模块,ORM框架能很容易地和Spring的其他功能(例如事务管理)整合。

3.OXM

OXM模块提供了对OXM实现的支持,比如JAXB、Castor、XML Beans、JiBX、XStream等。

4.JMS

JMS模块包含消息的生产(Produce)和消费(Consume)功能。从Spring 4.1开始,Spring集成了Spring-Messaging模块,用于实现对消息队列的支持。

5.事务处理

事务处理(Transactions)模块基于接口方式实现了声明式事务管理。编程式事务的实现需要应用程序调用相应的beginTransaction()、commit()、rollback()等方法来实现事务的管理,Spring声明式事务只需要通过注解或配置即可实现事务的管理,具体的事务管理工作由Spring自动处理,应用程序不需要关心事务的提交(Commit)和回滚(Rollback)。

1.2.3 Web应用层

Web应用层主要包含Web交互和数据传输等相关功能,由Web、Web-MVC、Web-Socket、Web-Portlet组成。

1.Web

Web模块不但提供了面向Web应用的基本功能,还提供了HTTP(Hyper Text Transfer Protocol,超文本传输协议)客户端及Spring远程调用中与Web相关的部分。Web模块基于Servlet监听器初始化IoC容器。

2.Web-MVC

Web-MVC模块为Web应用提供了模型视图控制(Model View Controller,MVC)和REST API服务的实现。Spring的MVC框架使数据模型和视图分离,数据模型负责数据的业务逻辑,视图负责数据的展示。同时,Web-MVC可与Spring框架的其他模块方便地集成。

3.Web-Socket

Web-Socket模块提供了对WebSocket-Base的支持,用于实现在Web应用程序中服务端和客户端实时双向通信,尤其在实时消息推送中应用广泛。

4.Web-Portlet

Web-Portlet模块提供了基于Portlet环境的MVC实现,并提供了与Spring Web-MVC模块相关的功能。

1.2.4 其他重要模块

除了上述介绍的模块,Spring还有其他一些重要的模块,例如,AOP、Aspects、Instrumentation、Messaging和Test等。

1.AOP

AOP模块提供了面向切面的编程实现,允许应用程序通过定义方法拦截器和切入点来实现系统功能和业务功能之间的解耦。

2.Aspects

Aspects模块提供了Spring与AspectJ的集成,是一个面向切面编程的模块。

3.Instrumentation

Instrumentation模块在应用中提供了对Instrumentation的支持和类加载器的实现。

4.Messaging

Messaging模块为STOMP(Simple Text Orientated Messaging Protocol,简单文本定向消息协议)提供了支持,主要用于应用程序中WebSocket子协议的实现。同时,Messaging模块可通过注解的方式来选择和处理来自WebSocket客户端的STOMP消息。

5.Test

Test(测试)模块用于对JUnit或TestNG等测试框架提供支持,以实现Spring代码的自动化测试。