Spring本身具有非常好的模块化架构,包含了20多个模块。这些模块可以单独使用,也可以组合使用,所有模块通过依赖注入组合在一起。依赖注入使设计和测试低耦合的软件模块变得更容易。Spring模块如图1-1所示。
▲图1-1 Spring模块
下面对关键模块进行介绍。
Spring为实现数据和集成层提供了多种选择,包括以下重要的数据访问模块。
● JDBC:使用JDBC与关系数据库通信,简化访问过程。
● ORM:提供与所有ORM(对象关系映射,如Hibernate和MyBatis)框架的良好集成。
● JMS:提供了通过队列与另一个应用程序通信的能力,Spring与JMS有很好的集成。
● OXM:在需要对象到XML映射的场景中提供良好的集成。
● Transactions:数据访问和集成功能的重要组成部分。Spring对事务管理有很好的支持。
Spring对开发Web应用程序提供了很好的支持。
● WebSocket:提供Socket通信功能支持。
● Servlet:提供Spring MVC框架实现支持。
● Web:提供框架所需的核心类,包括自动载入Web Application Context特性的类、Struts集成类、文件上传的支持类、Filter类和大量辅助工具类。
● Portlet:提供Web模块功能的聚合功能支持。
AOP提供面向切面的编程实现,它提供了定义方法拦截器的工具。
AOP对达到安全性和实现日志记录等非常有用。Spring中的AOP提供基本的AOP功能。Spring提供了与AspectJ框架的良好集成,以执行高级AOP。
它是面向切面模块的重要组成部分,提供对AspectJ框架的整合支持。
Instrumentation提供对JVM和Tomcat的检测。
Messaging提供消息处理功能。
这是Spring中使用次数最多的部分,包括以下模块。
● Beans:管理应用程序依赖项,Beans模块提供了BeanFactory。
● Core:提供Spring的基本功能,包括控制反转和依赖注入。
● Context:维护应用程序的上下文模块,提供一种访问任何对象的方法。ApplicationContext接口是Context模块的重要组成部分。
● SpEL:表达式语言模块,提供了一种在运行时操作对象的方法。
Spring的Test模块为单元测试和集成测试提供了很好的支持,并提供了大量模拟对象来支持它们。