spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块。
(1)Core Container
Core Container(核心容器)包含有Core、Beans、Context和Expression Language模块。
Core和Beans模块是框架的基础部分,提供IOC(转控制)和依赖注入特性。
- Core模块主要包含spring框架基本的核心工具类,spring的其他组件都要使用到这个包里的类,Core模块是其他组件的基本核心。
- Beans模块是所有应用都要用的,它包含访问配置文件、创建和管理bean以及进行Inversion of Controller/Dependency Injection(IOC/DI)操作相关的所有类。
- Context模块构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。Context模块继承了Beans的特性,为spring核心提供了大量的扩展,添加了对国际化、事件传播、资源加载和对Context的透明创建的支持。ApplicationContext接口是Context模块的关键。
- Expression Language 模块提供了一个强大的表达式语言用于运行时查询和操纵对象。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文、容器和索引器、逻辑和算术运算符、命名变量以及spring的IOC容器中根据名称检索对象。它也支持list投影、选择和一般的list聚合。
(2)Data Access/Integration
Data Access/Integration 层包含有JDBC、ORM、OXM、JMS和Transaction模块。
- JDBC模块提供了一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。这个模块包含了Spring对JDBC数据访问进行封装的所有类。
- ORM模块为流行的对象-关系映射API,如JPA、JDO、Hibernate、Ibatis等,提供了一个交互层。利用ORM封装包,可以混合使用所有spring提供的特性进行O/R映射。
- OXM模块提供了一个对Object/XML映射实现的抽象层,Object/XML映射实现包括JAXB、Castor、XMLBeans、JiBX和XStream。
- JMS(java messaging Service)模块主要包含了一些制造和消费消息的特性。
- Transaction 模块支持编程和声明性的事务管理,这些事物类必须实现特定的接口,并且对所有的POJO都适用。
(3)Web
Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。
- Web模块:提供了基础的面向Web的集成特性。例如,多文件上传、使用servlet listeners初始化IoC容器以及一个面向Web的应用上下文。它还包含spring远程支持中Web的相关部分。
- Web-Servlet模块:该模块包含spring的MVC(model-view-controller)实现。
- Web-Struts模块:该模块提供了对Struts的支持,使得类在spring应用中能够与一个典型的Struts Web层集成在一起。
- Web-Portlet模块:提供了用于Porlet环境和Web-Servlet模块的MVC实现
(4)AOP
- Aspects模块提供了对AspectJ的集成支持。
- Instrumentation模块提供了class instrumentation 支持和classloader实现,使得可以在特定的应用服务器上使用。
(5)Test
Test模块支持使用Junit和TestNG对spring组件进行测试。