Spring 是一个分层架构,包含一系列的功能要素,如下图所示(此图参考Spring源码深度解析):
这些模块为企业级应用开发提供了所需的一切,根据需求选择需要的Spring模块。
- Spring核心容器
Core Container (核心容器)包含有 Core, Beans, Context 和 Expressio Language 模块Core Beans 模块是框架的基础部分,提供 IoC (转控制)和依赖注入特性 这里的基础概念是BeanFactory ,它提供对 Factory 模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
Core 模决主要包含 Spring 框架基本的核心工具类, Spring 的其他组件都要用到这个包里的类, Core 模块是其他组件的基本核心;
Beans 模块是所有应用都会用到的,它包含访问配直文件、创建和管理 bean 以及进行Inversion of Control I Dependency Injection ( IoC/DI )操作相关的所有类
Context 模块构建于 Core Beans 模块基础之上,提供了一种类似于JNDI 注册器的框架式的对象访问方法 Context 模块继承了 Beans 的特性,为 Spring 核心提供了大量扩展,添加了对国际化(例如资源绑定)、事件传播、资源加载和对 Context 透明创建的支持。 Context 模块同时也支持 J2EE 的一些特性, ApplicationContext 接口是 Context 模块的关键
Expression Language 模块提供了强大的表达式语言,用于在运行时查询和操纵对象, 它是 JSP 2.1 规范中定义的 unifed expression languag 的扩展 该语言支持设直/获取属性的值,属性的分配,方法的调用,访问数组上下文( accessiong the context of arrays )、容器和索引器、逻辑和算术运算符、命名变量以及从 Spring的 IoC 容器中根据名称检索对象 它也支持 list 投影、选择和一般的 list 聚合。
- Spring的AOP模块
在AOP模块中,Spring对面向切面编程提供了丰富的支持,可以定义如方法的切点,类的切面以声明的方式注入,降低模块之间的耦合度。
- 数据访问与集成
使用JDBC例如编写数据库连接通常会导致大量的样板式代码,Spring JDBC模块提供了一个JDBC抽象层,使数据库代码可以重用,简化代码。
ORM(Object- relational Mapping)对象-关系映射API,Spring的ORM模块是建立在DAO之上,提供了一个交互层,而不是直接操作JDBC,集成了流行的ORM框架,包括Hibernate、iBatis等,Spring的事务管理支持所有的ORM框架以及JDBC。
- Web 与远程调用
MVC模式是一种比较常用构建web应用的方法,将界面逻辑和应用逻辑分离,Spring web 可以与其他MVC模块进行集成。
- Test
Test模块支持使用JUnit对Spring其他组件进行测试。