一.核心容器:Spring核心容器由spring-core、spring-beans、spring-context、spring-context-support和spring-expression模块组成
spring-core、spring-beans模块包含IoC和依赖注入等spring框架基础功能。BeanFactory是复杂的工厂模式,它消除了单例编程的需要并且可以与许允你根据实际的程序逻辑中分离配置文件和规范
spring-context模块建立在spring-context和spring-beans模块基础上,它是访问框架的方式类似于JNID注册表的方式。Context模块继承Bean模块,并增加了国际化(例如,使用资源)、事务传播、资源加载即通过servlet容器创建对上下文支持。Context模块还支持JavaEE功能例如:EJB、JMS和基本远程处理。ApplicationContext接口是Context模块的核心。spring-context-support提供了第三方库集成到spring应用上下文以支持缓存(EhCache、Guava、JCache)、邮件(JavaEmail)、调度(CommentJ、Quartz)、模板引擎(FreeMarker,JasperReports,Velocity)的支持。
spring-expression模块springEL表达式,它运行时查询和操作对象图是对JSP 表达语言的一种扩展(统一EL),该语言支持设置和获取属性值,属性分配,方法调用,访问数组,集合和索引器,逻辑和算术运算符,命名变量以及按名称从Spring的IoC容器中检索对象的内容。它还支持列表投影和选择以及常见的列表聚合。
二.AOP and Instruments
spring-aop模块允许你自定义的AOP实现统一面向切面编程,例如方法拦截和切点能够实现代码分离功能代码完全解耦,使用源代码元数据功能、你也能整合你代码中的行为信息,例如你熟悉的.net属性
spring-aspect整合了AspectJ
spring-instrument模块提供了对Instrument类支持及类加载器实现,以在某些应用服务中使用
spring-instrument-tomcat模块包含spring 对tomcat的一套代理
三.Message
spring-messing模块是spring整合了Message、MessageChannel、MessageHandler及其他一些基础的应用消息服务,这个模块也包含消息映射的方法,类似于springmvc程序代码的注释
四.Data access/Integration
Data access/Integration层由JDBC、ORM、OXM、JMS和Transaction模块组成
spring-jdbc模块提供了jdbc的抽象层,它移除了冗长的jdbc代码并且分析了数据库供应商的特定错误代码
spring-tx模块对于你的类及pojo实现了特殊接口支持声明式事务和编程是事务管理
spring-orm模块提供了关系对象映射整合层的API,例如JPA、hibernate、JDO。使用spring-orm模块你能使用将这些orm框架与spring的提供的其他功能结合使用,例如前面提到的声明式事务功能
spring-oxm模块提供了object/xml映射的抽象层的实现类似于:JAXB, Castor, XMLBeans, JiBX and XStream
spring-jms模块包含生产和消费的功能
五.Web
web层由spring-web、spring-webmvc、spring-websocket、和spring-webmvc-portlet某块组成
spring-web模块是面向web整合功能例如多文件上传功能、用servlet监听器初始化IOC容器和面向web的上下文应用,它也包含Http客户端及spring的web远程部分
spring-webmvc模块也被称为servlet-portlet模块包含spring的 model-view-controller(MVC)和实现了应用的REST web service。spring的MVC框架提供了Domain model代码和web表单二者间清晰的分类并且整合了其他spring框架的其他功能
spring-webmvc-portlet模块也被称为web-portlet模块提供了基于插件环境的MVC实现和基于servlet base和spring-mvc模块
六.Test
The spring-test
module supports the unit testing and integration testing of Spring components with JUnit or TestNG. It provides consistent loading of SpringApplicationContext
s and caching of those contexts. It also provides mock objects that you can use to test your code in isolation.