1.1 Spring的整体架构--Spring源码深度解析

前言:

  Spring 始于2003年,轻量级 Java 开源框架。

  Spring 是为了解决企业应用开发的复杂性而创建的,它使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。

  Spring 的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。

Spring 的整体架构:

  Spring 框架是一个分层架构,被分为大约20个模块。

  (1)Core Container

    Core Container (核心容器)包含有 Beans、Core、Context、Expression language 模块。

    Core 和 Beans 模块是框架的基础部分,提供 IOC(控制反转)和依赖注入特性。这里的基础概念是 BeanFactory 。它提供对 Factory 模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

    Core 模块主要包含 Spring 框架基本部分的核心工具类,Spring 的其他组件要都要使用到这个包里的类,Core 模块是其他组件的基本核心。当然你也可以在自己的应用系统中使用这些工具类。

    Beans 模块是所有应用都要用到的,它包含访问配置文件、创建和管理 bean 以及进行 Inversion of Control / Dependency Injection(IOC/DI) 操作相关的所有类。

    Context 模块构建于 Core 和 Beans 模块基础之上,提供了一种类似于 JNDI 注册器的框架式的对象访问方法。Context 模块继承了 Beans 的特性,为 Spring 核心提供了大量扩展,添加了对国际化(例如资源绑定)、事件传播、资源加载和对 Context 的透明创建的支持。Context 模块同时也支持 J2EE 的一些特性,例如 EJB、JMX 和基础的远程处理。ApplicationContext 接口是 Context 模块的关键。

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

  (2)Data Access/Integration

    Data Access/Integration 层包含有 JDBC、ORM、OXM、JMS 和 Transaction 模块。

    JDBC 模块提供了一个 JDBC 抽象层,它可以消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码。这个模块包含了 Spring 对 JDBC 数据访问进行封装的所有类。

    ORM 模块为流行的对象-关系映射 API。如 JPA、JDO、Hibernate、Ibatis 等,提供了一个交互层。利用 ORM 封装包,可以混合使用所有 Spring 提供的特性进行O/R 映射。如简单声明性事务管理。

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

    OXM 模块提供了一个对 Object/XML 影射实现的抽象层,Object/XML 映射实现包括 JAXB、Castor、XMLBeans、JiBX 和 XStream。

    JMS(Java Messaging Service)模块主要包含了一些制造和消费消息的特性。

    Transaction 模块支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并且对所有的 POJO 都适用。

  (3)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 中是 deprecated的。

    Web-Porlet 模块提供了用于 Portlet 环境和 Web-Servlet 模块的 MVC 的实现。

  (4)AOP

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

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

    Aspects 模块提供了对 AspectJ 的继承支持。

    Instrumentation 模块提供了 class instrumentation 支持和 classloader 实现,使得可以在特定的应用服务器上使用。

  (5)Test

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

时间: 2024-10-07 00:23:57

1.1 Spring的整体架构--Spring源码深度解析的相关文章

Spring源码深度解析pdf

下载地址:网盘下载 <Spring源码深度解析>从核心实现和企业应用两个方面,由浅入深.由易到难地对Spring源码展开了系统的讲解,包括Spring的设计理念和整体架构.容器的基本实现.默认标签的解析.自定义标签的解析.bean的加载.容器的功能扩展.AOP.数据库连接JDBC.整合MyBatis.事务.SpringMVC.远程服务.Spring消息服务等内容. <Spring源码深度解析>不仅介绍了使用Spring框架开发项目必须掌握的核心概念,还指导读者如何使用Spring框

JAVA框架底层源码剖析系列Spring,Mybatis,Springboot,Netty源码深度解析

<Spring源码深度解析>从核心实现和企业应用两个方面,由浅入深.由易到难地对Spring源码展开了系统的讲解,包括Spring的设计理念和整体架构.容器的基本实现.默认标签的解析.自定义标签的解析.bean的加载.容器的功能扩展.AOP.数据库连接JDBC.整合MyBatis.事务.SpringMVC.远程服务.Spring消息服务等内容. <Spring源码深度解析>不仅介绍了使用Spring框架开发项目必须掌握的核心概念,还指导读者如何使用Spring框架编写企业级应用,并

Spring源码深度解析,事务案例讲解高级

Spring的整体架构Spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块,如下图所示 这些模块被总结为以下几个部分: Core Container Core Container(核心容器)包含有Core.Beans.Context和Expression Language模块 Core和Beans模块是框架的基础部分,提供IoC(转控制)和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许

SPRING技术内幕,Spring源码深度解析

 SPRING技术内幕,Spring源码深度解析 SPRING技术内幕:深入解析SPRING架构与设计原理(第2版)[带书签].pdf: http://www.t00y.com/file/78131650 Spring源码深度解析 [郝佳编著] sample.pdf: http://www.t00y.com/file/78131634 [jingshuishenliu.400gb.com]Spring Data.pdf: http://www.t00y.com/file/78256084 [

Spring源码深度解析第一天

其实第一天已经过去了,今天是第二天.iteye刚注册的小号就被封了.不论是它的失误还是他的失误总之我跟iteye是没有缘分了. 昨天基本没有进展.所以从今天开始说了.下面流水账开始了. <Spring源码深度解析>这本书没有pdf完整版是让我很失望的.如果有完整版即使看完了我也会选择买一本实体如果有用的话. 书中说从github下载源码.发现github没有想象中的简单易懂.还需要记忆很多命令才能玩得转.从github上获得了Spring源码后需要使用Gradle来编译成eclipse项目.g

spring源码深度解析— IOC 之 开启 bean 的加载

概述 前面我们已经分析了spring对于xml配置文件的解析,将分析的信息组装成 BeanDefinition,并将其保存注册到相应的 BeanDefinitionRegistry 中.至此,Spring IOC 的初始化工作完成.接下来我们将对bean的加载进行探索. 之前系列文章: spring源码深度解析— IOC 之 容器的基本实现 spring源码深度解析— IOC 之 默认标签解析(上) spring源码深度解析— IOC 之 默认标签解析(下) spring源码深度解析— IOC

spring5 源码深度解析----- 被面试官给虐懵了,竟然是因为我不懂@Configuration配置类及@Bean的原理

@Configuration注解提供了全新的bean创建方式.最初spring通过xml配置文件初始化bean并完成依赖注入工作.从spring3.0开始,在spring framework模块中提供了这个注解,搭配@Bean等注解,可以完全不依赖xml配置,在运行时完成bean的创建和初始化工作.例如: public interface IBean { } public class AppBean implements IBean{ } //@Configuration申明了AppConfig

源码深度解析SpringMvc请求运行机制(转)

源码深度解析SpringMvc请求运行机制 本文依赖的是springmvc4.0.5.RELEASE,通过源码深度解析了解springMvc的请求运行机制.通过源码我们可以知道从客户端发送一个URL请求给springMvc开始,到返回数据给客户端期间是怎么运转的. 1.用户请求处理过程: 1.用户发送请求时会先从DispathcherServler的doService方法开始,在该方法中会将ApplicationContext.localeResolver.themeResolver等对象添加到

【Spring源码深度解析系列 】Spring整体架构

一.Spring的整体架构和模块 二.模块分类: 1.Core Container Core Container包含有Core .Beans.Context.和Expression  Language模块 2.Data Access/Integration Data Access/Integration包含有JDBC.ORM.OXM.JMS和Transaction模块 3.Web Web层包含了Web.Web-Servlet.Web-Struts.Web-Porlet模块. 4.AOP 5.Te