一,spring的整体架构
spring是一个分层架构,被分为大约有20个模块,主要分为五大类。
一(1),Core Container(核心容器)
Core核心容器模块 包括 core , beans ,context , Expression Language模块。core和beans 模块是框架的基础部分(beanfactory)提供IOC和依赖注入的特性。
-
core模块是spring的核心工具类,spring的其他组件都要用到这个包里的类。
-
bean模块是所有应用都要用到的,包含访问配置文件,创建管理bean 以及进行控制反转和依赖注入的各种操作
-
context模块构建于core和beans模块之上,继承了beans的特性,为spring核心提供了大量拓展,添加了对国际化例如资源绑定,事件传播,资源加载和对context透明创建的支持。ApplicationContext接口是Context模块的关键。
-
Expression language模块提供了一个强大的表达式语言用于在运行时查询和操纵对象。支持设置和获取属性的值,属性的分配,方法的调用,访问数组上下文,容器和索引器,逻辑和算术运算符,命名变量和从IOC容器中根据名称检索对象,支持list投影,选择,和一般的list聚合。
一(2),Data Access/Integration
Data Access/Integration层包含有JDBC,ORM,OXM,JMS和Trascation模块,其中:
- JDBC模块提供了一个JDBC抽象层,包含了spring对JDBC数据访问进行封装的所有类。
- ORM模块为流行的对象-关系映射API,入JPA,JDO,Hibernate,iBatis等,提供了一个交互层,利用ORM封装包可以混合所有spring提供的特性进行O/R映射。
- OXM模块提供了Obeject/XML映射实现的抽象层,包括JAXB, Castor, XMLBeans, JiBX, XStream。
- JMS模块主要包含了一些制造和消费消息的特性。
- Transaction模块支持编程和声明性的事物管理,这些事物类必须实现特定的接口,并对所有的pojo都适用。
一(3),web
web上下文模块建立在应用程序上下文模块之上,为基于web的应用程序提供了上下文。
- web模块,提供了基础的面向web的集成特性。例如,多文件上传等
- web-servlet模块,包含了spring的modile-view-controller(MVC)实现。
- web-struts模块,提供了对于struts的支持。
- web-porlet模块,提供了porlet环境和web-servlet模块的MVC实现。
一(4),aop
AOP模块可以定义方法拦截器和切点,从而将逻辑代码分开,降低耦合性。
- aspects模块提供了对于AspectJ的定义支持。
- Instrumentation模块提供了class instrumentation支持和classloader实现,使得可以在特定的应用服务器上使用。
一(5),test
test模块支持用Junit和TestNG对spring组件进行测试。