【Spring】体系结构
Spring
框架至今集成了多个模块,这些模块分布在数据访问/集成(Data Access/Integration)、Web层、面向切面的编程(Aspect Oriented Programming,AOP)模块、植入(Instrumentation)模块、消息传输(Messaging)、核心容器(Core Container)和测试(Test)。
一、数据访问/集成
该层由JDBC
、ORM
、OXM
、JMS
(Java Messaging Service)和事务(Transactions,tx)模块组成:
-
Spring-jdbc
模块:提供JDBC
抽象层,消除了烦琐的JDBC
编码和数据库厂商特有的错误代码解析。 -
Spring-orm
模块:为对象关系映射(Object-Relational Mapping, ORM)API提供了一个集成层,支持JPA
和Hibernate
。 -
Spring-oxm
模块:提供了一个支持对象/XML
映射的抽象层实现。 -
Spring-jms
模块:Java
消息传递服务,包含用于生产和使用消息的功能。Spring 4.1
以后提供了与Spring-messaging
模块的集成。 -
Spring-tx
模块:支持用于实现特殊接口和所有POJO
(普通Java
对象)类的编程和声明式事务管理。
二、Web 层
Web
层由Spring-web
、Spring-webmvc
(也称为Web-Servlet
模块)、Spring-websocket
和Portlet
模块组成:
-
Spring-web
模块:提供基本的Web
开发集成功能,例如多文件上传功能、使用Servlet
监听器初始化一个IoC
容器以及Web
应用上下文。 -
Spring-webmvc
模块:包含用于Web
应用程序的Spring MVC
和REST Web Services
实现。 -
Spring-websocket
模块:Spring 4.0
以后新增的模块,提供了WebSocket
和SockJS
的实现。 -
Portlet
模块:类似于Servlet
模块的功能,提供了Portlet
环境下的MVC
实现。
三、AOP 和 植入
-
Spring-aop
模块:提供符合AOP
要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,实现解耦。 -
Spring-aspects
模块:可以与AspectJ
集成。AspectJ
是一个强大且成熟的面向切面编程(AOP)框架,用于帮助开发者更好地管理代码中的横切关注点。 -
Spring-instrument
模块:提供类植入支持和类加载器的实现,可以在特定的应用服务器中使用。
四、消息模块
Spring 4.0
新增了消息(Spring-messaging
)模块,该模块提供了对消息传递体系结构和协议的支持。
五、核心容器
Spring
的核心容器是其他模块的基础,其包含:
-
Spring-core
模块:提供控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)等基础组成部分。 -
Spring-beans
模块:提供BeanFactory
(工厂模式的经典实现),Spring
将管理对象称为Bean
。 -
Spring-context
模块:建立在Spring-core
模块和Spring-beans
的基础之上,提供一个框架式的对象访问方式,作为访问定义和配置的任何对象的媒介ApplicationContext
接口是该模块的焦点。 -
Spring-context-support
模块:支持整合第三方库到Spring
应用程序上下文。 -
Spring-expression
模块:提供强大的表达式语言去支持运行时查询和操作对象图。
六、测试
Spring-test
模块支持使用JUnit
或TestNG
对Spring
组件进行单元测试和集成测试。