Spring框架是一个分层架构。
1)Core Container,核心容器;
Core Container是核心容器,包含了Core、Beans、Context、Expression Language模块。
Core模块是Spring框架的核心工具类,其他所有的模块都要用到该模块,是其他一切组件的基本核心。
Beans模块是其他所有模块都要用到的模块,它包含了访问配置文件、创建和管理各种Bean,以及进行IOC控制反转和DI依赖注入相关的所有类。
Context模块是基于Core模块和Beans模块之上的一个扩展,是继承了Beans模块的所有特点,并为Spring核心模块提供了大量的扩展,其中ApplicationContext接口是Context模块的关键。
Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操作对象。
2)Data Access/Integration(整合)模块;
Data Access/Integration模块包含了JDBC(Java数据库连接)、ORM(对象关系映射)、OXM(对象XML文件映射)、JMS(Java消息服务模块)、Transaction(事务模块)。
3)Web模块;
Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
4)AOP模块;
AOP模块提供了在Spring中进行面向切面编程思想的实现,该模块可以让你实现例如:自定义方法拦截器、切面等等,实现了逻辑代码的分离,降低了程序的耦合度。
其中的Aspects模块提供了对于AspectJ框架的集成支持;
AspectJ框架是一个AOP框架,提供了强大的AOP功能,AspectJ框架与Spring AOP的区别,AspectJ是静态代理机制,而Spring AOP是动态代理机制(JDK动态代理和CGLIB动态代理)。
5)Test模块;
Test模块提供了JUnit和TestNG对Spring组件进行测试。