Spring 整体架构简介

Spring 整体架构简介

        • Spring 简介
        • Spring 的整体架构
          • Core Container
          • Data Access/Integration
          • Web
          • AOP
          • Test

Spring 简介

Spring 是于 2003 年兴起的 个轻量级 Java 开源框架 Rod Johnson 在其著作 Exper One-On-One J2EE Design and lopment 中阐述的部分理念和原型衍生而来 Spring 是为了解决企业应用开发 复杂性而创建的 ,它使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情 然而, Spring 的用途不仅限于服务器端的开发,从简单性、可测试性和松搞合的角度而言, 任何 Java 应用都可以从 Spring 受益.

Spring 的整体架构

Spring 框架是 个分层架构,它包含一系列的功能要素,并被分为大约 20 模块, 这些模块被总结为以下几部分:

Core Container

Core Container (核心容器)包含有 Core, Beans, ContextExpressio 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 的一些特性,例如: EJB 、JMX和基础的远程处理 ApplicationContext 接口是 Context 模块的关键

  • Expression Language 模块提供了强大的表达式语言,用于在运行时查询和操纵对象, 它是 JSP 2.1 规范中定义的 unifed expression languag 的扩展 该语言支持设直/获取属性的值,属性的分配,方法的调用,访问数组上下文( accessiong the context of arrays )、容器和索引器、逻辑和算术运算符、命名变量以及从 prit屯的 IoC 容器中根据名称检索对象 它也支持 list 投影、选择和一般的 list 聚合。

Data Access/Integration

Data Access/Integration 层包含JDBC, ORM, OXMJMSTransaction 模块

  • JDBC 模块提供了一个 JDBC 抽象层,它可以消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码 这个模块包含了 Spring JDBC 数据访问进行封装的所有类
  • ORM 模块为流行的对象-关系映射 API ,如 JPA JDO Hibernate iBatis 等,提供了一个交互层 利用 ORM 封装包,可以混合使用所有 Spri ng 提供的特性进行 O/R 映射, 如前边提到的简单声明性事务管理。

Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO,Hibernate iBatisSQL Map 所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

  • OXM 模块提供了一个对 ObjecνXML 映射实现的抽象层, Object/XML 映射实现包括JAXB, Castor, XMLBeans ,JiBX 和XStrearn。
  • JMS ( Java Messaging Service )模块主要包含了 一些制造和消费消息的特性
  • Transaction 模块支持编程和声明性的事务管理,这些事务类必须实现特定的接 口,并且对所有的 POJO 都适用。
Web

Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文 所以,Spring 框架支持与 Jakarta Struts 的集成 Web 模块还简化了处理大部分请求以及将请求参数绑定域对象的工作, Web 层包含Web, Web-Servlet, Web-Struts 和 Web-Porlet 模块,具体说明如下:

  • Web 模块:提供了基础的面向 Web 的集成特性 例如,多文件上传、使用 servlet listeners 初始化 IoC 容器以及一个面向 Web 的应用上下文, 它还包含 Spring 远程支持中 Web 的相关部分
  • Web-Servlet 模块 web.servlet.jar :该模块包含 Spring model-view-controller ( MVC) 实现, Spring MVC 框架使得模型范围内的代码和 web forms 之间能够清楚地分离开来,并与 Spring 框架的其他特性集成在一起.
  • Web-Struts 模块:该模块提供了对 Struts 的支持, 使得类在 Spring 应用中能够与一个典型的 Struts Web 层集成在一起 注意,该支持在 Spring 3.0 中已被弃用
  • Web-Porlet 模块:提供了用于 Portlet 境和 Web-Servlet 模块的 MVC 的实现
AOP

AOP 模块提供了一个符合 AO 联盟标准的面向切面编程的实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的调合性 利用 source-level 的元数据功能,还可以将各种行为信息合并到你的代码中,这有点像 Net 技术中的 attribute 概念。

通过配置管理特性, SpringAOP 模块直接将面向切面的编程功能集成到了 Spring 框架中,所以可以很容易地使 Spring 框架管理的任何对象支持 AOP Spring AOP 模块为基于 Spring的应用程序中的对象提供了事务管理服务 通过使用 SpringAOP ,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

  • Aspects 模块提供了对 AspectJ 的集成支持
  • Instrumentation 模块提供了 class instrumentation 支持和 classloader 实现, 使得可以在特
    定的应用服务器上使用
Test

Test 模块支持使用 JUnit 和TestNG 对 Spring 组件进行测试

注意:本文参考《Spring源码深度解析》-郝佳

你可能感兴趣的:(Spring源码系列,spring,架构,java)