Spring —— 源码学习【整体架构】
整体架构图如下:
组成部分
Core Container(核心容器)
Core、Beans是框架基础部分,提供Ioc(控制反转)和依赖注入特性。
-
Core
涵盖框架核心工具类,Spring 其他组件都会使用这里的类。 -
Beans
所有应用都会使用,包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency injection(IOC/DI) 控制反转、依赖注入操作相关的所有类。
-
Context
构建在Core和Bean之上,Context继承Bean特性,为Spring 框架提供大量扩展功能,例如:国际化、事件传播、资源加载和Context的透明创建支持。
ApplicationContext接口是Context模块的关键。
-
Expression Language
提供表达式语言,用于运行时查询和操纵对象。该语言支持设置/获取属性值,属性的分配,方法的调用,访问数组上下文(accessiong the context of arrays)、容器和索引器、逻辑和算术运算符、命名变量以及从Spring的IoC容器中根据名称检索对象。
Data Access/Integration
-
JDBC
Spring对JDBC数据访问进行封装的所有类。
-
ORM
为流行对象关系映射API如JPA、JDO、Hibernate、iBatis等提供一个交互层。
利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射。 -
OXM
提供了一个对Object/XML映射实现的抽象层,Object/XML映射实现包括JAXB、Castor、XMLBeans、JiBX和XStream。扫描二维码关注公众号,回复: 5360742 查看本文章 -
JMS(Java Messaging Service)
包含一些制造和消费消息的特性。 -
Transaction
支持编程和声明性事务管理
,这些事务必须实现特定的接口,并且对所有的POJO都适用。
Web
Web上下文模块,建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web层包含了Web、Web-Servlet、Web-Struts和Web-Porlet模块。
-
Web
提供基础面向Web的集成特性。 -
Web-Servlet
-
Web-Struts
-
Web-Porlet
Aop
AOP提供一个符合AOP联盟标准面向切面编程的实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性。
利用source-level的元数据功能,可以将各种行为信息合并到代码中。
通过配置管理特性,Spring AOP模块直接将面向切面的编程功能集成到了Spring框架中,达到使Spring框架管理的任何对象支持AOP,Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。
-
Aspects
提供对AspectJ集成支持。 -
Instrumentation
提供了instrumentation支持和ClassLoader实现,使得可以在特定的应用服务器上使用。
Test
支持使用Junit和TestNG对Spring组件进行测试。