Spring由哪些模块组成?
简单描述则是主要由以下几个模块组成:
Spring框架采用的是分层架构,它一系列的功能要素被分成20个模块,这些模块大体分为Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation、Messaging和Test。
上图中,包含了Spring框架的所有模块,其中,灰色背景模块为本书中所涉及的主要模块。接下来分别对体系结构中的模块作用进行简单介绍,具体如下。
Core Container(核心容器)
Spring的核心容器是其他模块建立的基础,它主要由Beans模块、Core模块、Context模块、Context-support模块和SpEL(Spring Expression Language,Spring表达式语言)模块组成,具体介绍如下。
-
Beans模块:这个模块是Spring框架的基础,提供了Bean的定义、创建和管理的功能。它包括了BeanFactory接口和相关的实现类,用于加载、实例化和管理Bean对象。
-
Core模块:这个模块提供了Spring框架的核心功能,包括依赖注入(DI)和控制反转(IOC)等。它通过IOC容器管理对象的创建和依赖关系,实现了对象之间的解耦合。
-
Context模块:这个模块建立在Core模块的基础上,提供了更高级的容器功能,如国际化、事件传播、资源加载等。它是Spring应用程序的运行环境,提供了上下文(ApplicationContext)的实现。
-
Context-support模块:这个模块提供了与特定环境相关的上下文支持,如Web应用程序、企业级应用程序等。它包括了对Servlet、JSP、JMX等的支持,方便在不同环境下使用Spring框架。
-
SpEL模块:这个模块提供了Spring Expression Language(SpEL),是一种强大的表达式语言。它可以在运行时对对象进行解析和操作,支持属性访问、方法调用、条件判断等,用于配置和处理Spring框架中的各种表达式。
Data Access/Integration(数据访问/集成层)
数据访问/集成层包括JDBC、ORM、OXM、JMS和Transactions模块,具体介绍如下。
-
JDBC模块:这个模块提供了对JDBC(Java Database Connectivity)的封装和支持,简化了与关系型数据库的交互。它提供了JdbcTemplate等类,用于执行SQL语句、处理结果集等操作。
-
ORM模块:这个模块提供了对对象关系映射(ORM)框架的支持,如Hibernate、MyBatis等。它通过封装和整合这些框架,简化了与数据库的交互,提供了更高级的持久化和查询功能。
-
OXM模块:这个模块提供了对对象-XML映射(OXM)的支持,用于处理XML数据和对象之间的转换。它包括了对JAXB、Castor等框架的封装,方便在Spring应用中进行XML数据的读写和转换。
-
JMS模块:这个模块提供了对Java消息服务(JMS)的支持,用于实现异步消息的发送和接收。它封装了JMS API,提供了消息的生产和消费功能,方便在Spring应用中进行消息的处理和管理。
-
Transactions模块:这个模块提供了对事务管理的支持,用于处理数据库事务的提交和回滚。它提供了声明式事务的配置方式,可以通过注解或XML进行事务的定义和管理,简化了事务处理的过程。
Web层
Spring的Web层包括WebSocket、Servlet、Web和Portlet模块,具体介绍如下。
-
WebSocket模块:这个模块提供了对WebSocket协议的支持,用于实现实时的双向通信。它封装了WebSocket API,提供了WebSocket消息的发送和接收功能,方便在Spring应用中进行实时通信的开发。
-
Servlet模块:这个模块提供了对Servlet API的支持,用于处理HTTP请求和响应。它封装了Servlet API,提供了DispatcherServlet等类,用于处理请求的分发和处理,实现了基于MVC的Web开发模式。
-
Web模块:这个模块提供了更高级的Web功能,如文件上传、国际化、验证等。它包括了MultipartResolver、LocaleResolver等类,用于处理文件上传、国际化和验证等任务,方便在Spring应用中进行Web开发。
-
Portlet模块:这个模块提供了对Portlet API的支持,用于开发基于Portlet规范的Web应用程序。它封装了Portlet API,提供了Portlet MVC框架,方便在Spring应用中进行Portlet开发。
其他模块
Spring的其他模块还有AOP、Aspects、Instrumentation以及Test模块,具体介绍如下。
-
AOP模块:这个模块提供了对面向切面编程(AOP)的支持,用于实现横切关注点的模块化。它通过定义切点和切面,将横切逻辑与业务逻辑分离,实现了横切关注点的重用和集中管理。
-
Aspects模块:这个模块是在AOP模块的基础上构建的,提供了一些常用的切面实现,如事务管理、安全性、缓存等。它封装了这些切面的实现,方便在Spring应用中进行切面的配置和使用。
-
Instrumentation模块:这个模块提供了对Java虚拟机(JVM)的仪器化支持,用于监控和管理应用程序的运行。它包括了对JVM工具接口(JVM TI)的封装,提供了对类加载、内存管理等的监控和控制功能。
-
Test模块:这个模块提供了对Spring应用程序的测试支持,包括单元测试、集成测试等。它提供了一些测试类和注解,用于方便地编写和执行Spring应用程序的各种测试。