Spring框架大约有20个功能模块组成。这些模块分别被分组到Core Container、Data Access/Integration、Web、AOP(面向切面的编程)、Instrumentation、 Messaging和Test中,其结构如下图所示。
下面列出了每个可用模块的功能特性以及与其关联部件名称和它们所覆盖的范围。这些部件的名称与依赖管理工具中的部件ID相关联。
1. 内核容器(Core Container)
内核容器是由spring-core、spring-beans、spring-context、spring-context-support和spring-expression(Spring Expression Language)模块组成。
Spring-core和spring-beans模块提供了框架的基本功能,包括IoC和依赖注入特性。BeanFactory是工场模式的精美实现。它不需要单独的编程逻辑就可以把所依赖的配置和规范从程序的实际逻辑中分离开。
Context(spring-context)模块是在Core和Beans模块的基础之上构建的,它是一种类似于JNDI注册的访问框架样式内的对象的方法。Context模块继承了Beans模块的特性,并添加了国际化(使用资源绑定的方式)、事件传播、资源加载、以及通过Servlet容器透明创建的上下文环境。Context模块也支持Java EE特性,如EJB、JMX和基本的远程调用。ApplicationContext接口是Context模块的入口。spring-context-support提供了把常用的第三方类库(如缓存(EhCache、Guava、JCache)、邮件(JavaMail)、计划(CommonJ、Quartz)、以及模板引擎(FreeMarker、JasperReports、Velocity))集成到Spring应用场景中的支持。
spring-expression模块提供了可用于运行时查询和操作对象的强大的表达式语言。它是JSP2.1规范中指定的统一表达式语言的一个扩展。它支持设置和获取属性值、属性匹配、方法调用、访问数组内容、集合和索引、逻辑和算术运算、命名变量、以及使用对象名从Spring容器中检索对象等功能。它还支持列表的投射和选择以及常用的列表聚合。
2. AOP和监测器(Instrumentation)
spring-aop提供了可定义的符合AOP联盟标准的面向切面编程的实现。例如,应该把拦截器和切入点的方法与实现功能的代码进行清晰的解耦分离。使用代码级的元数据功能,也可以像.NET的属性那样把行为信息合并到代码中。
独立的spring-aspects模块提供AspectJ的集成。
spring-instrument模块提供了类的检测支持,并且类的加载器实现可以被用于特定应用服务中。spring-instrument-tomcat模块包含了Spring给Tomcat提供的监测代理。
3. 消息传递
Spring 框架包含的spring-messaging模块带有一些来自诸如Message、MessageChannel、MessageHandler等Spring Integration对象的关键抽象,它们被用于基于消息传递应用的服务基础。这个模块映射包含了一组用于消息映射的方法注释,类似于基于编程模式的Spring MVC注释。
4. 数据访问/集成
数据访问/集成层是由JDBC、ORM、OXM、JMS和事务模块组成。
spring-jdbc模块提供了一个JDBC抽象层,它剔除了繁琐的JDBC编码和数据库供应商 指定的错误代码的解析。
对于实现指定接口的类和所有的POJO对象,spring-tx模块提供的编程和声明式事务的支持。
spring-orm模块提供了通用的对象-关系映射API的集成层,包括对JPA、JDO和Hibernate集成。使用spring-orm模块可以使用跟Spring提供的其他功能合并到一起的所有的O/R映射框架,例如前面提到的简单的声明式事务管理功能。
spring-oxm提供了一个支持Object/XML映射实现带的抽象层,如JAXB、Castor、XMLBeans、JiBX和XStream等。
spring-jms模块(Java消息服务)包含了制造和使用消息的功能,从 Spring框架4.1开始,它就集成了spring-messaging模块。
5. Web
Web层由spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet模块组成。
spring-web模块提供了基本的面向web的基础功能,例如分段上传文件功能、使用Servlet监听器来初始化IoC容器,以及面向web的应用程序环境。它还包含了一个HTTP客户端和Spring远程支持的web相关的部分。
spring-webmvc模块(也被叫做Web-Servlet模块)包含了Spring的MVC框架和用于web应用程序的REST web服务的实现。Spring的MVC框架在域模型代码和web表达之间提供了清晰的边界,并且还集成了Spring框架的所有其他功能。
spring-webmvc-portlet模块(也被叫做Web-Portlet模块)提供了用于Portlet环境和映射spring-webmvc模块功能的MVC实现。
6. 测试
spring-test模块支持使用带有JUnit或TestNG的Spring 组件进行单元测试和集成测试。它提供了固定的Spring的ApplicationContests加载以及这些环境的缓存。它还提供了mock对象,可以让你使用隔离的方式来测试你的代码。
Spring框架简介---模块
最新推荐文章于 2023-09-15 20:13:06 发布