Spring系列学习之Spring核心组件

Spring系列学习之Spring核心组件

前言

  • 一、Spring的骨骼架构
  • 二、Spring核心组件
    • Bean组件
    • Context组件
    • Core组件
    • Ioc容器
  • 三、Spring中的AOP特性
    • 动态代理的实现
    • Spring AOP的实现
  • 四、设计模式解析之代理模式
  • 五、设计模式解析之策略模式

一、Spring的骨骼架构

Spring架构

Spring中的三个核心组件就是 Core、Context、Bean。

  • Bean包装的是Object,而Object必然有数据;
  • Context就是给Bean的数据提供生存环境,发现每个Bean之间的关系,为它们建立这种关系并且维护好这种关系。Context就是一个Bean关系的集合,这个关系集合又叫Ioc容器;
  • Core就是发现、建立、维护每个Bean之间的关系所需要的一系列工具。

二、核心组件

Bean组件

  1. Spring Bean的创建是典型的工厂模式,它的顶级接口时BeanFactory。

Bean工厂的继承层次关系-20198102457

  1. Bean的定义主要是由BeanDefinition描述。Bean的定义完整地描述了在Spring的配置文件中定义的节点中所有的信息,包括各种子节点。

  2. Bean的解析过程。Bean的解析主要就是对Spring配置文件的解析。

Context组件

Context就是给Spring提供一个运行时环境,用以保存各个对象的状态。Context作为Spring的Ioc容器,基本上整合了Spring的大部分功能,或者说是大部分功能的基础。

ApplicationContext是Context的顶级父类,除了能标识一个应用环境的基本信息外,还继承了5个接口。ApplicationContext继承了BeanFactory,说明了Spring容器中运行的主体对象是Bean。ApplicationContext继承了ResourceLoader接口,使得ApplicationContext可以访问到任何外部资源。

ApplicationContext的子类主要包含两个方面:

  • ConfigurableApplicationContext表示该Context是可修改的,也就是在构建Context中,用户可以动态添加或修改已有的配置信息;
  • WebApplicationContext就是为Web准备的Context,可以直接访问ServletContext。

Core组件

Core组件包含了很多关键类,一个重要的组成部分就是定义了资源的访问方式。

Resource接口封装了各种可能的资源类型,也就是对使用者来说屏蔽了文件类型的不同。Resource接口继承了InputStreamSource接口,在这个接口中有个getInputStream方法,返回的是InputStream类。一个加载资源的问题,也就是资源的加载者要统一,这个任务是由ResourceLoader接口完成的,屏蔽了所有的资源加载者的差异,只需要实现这个接口就可以加载所有的资源,它的默认实现是DefaultResourceLoader。

Context把资源的加载、解析和描述工作委托给了ResourcePatternResolver类来完成,它把资源的加载、解析和资源的定义整合在一起便于其他组件使用。

Ioc容器

Ioc容器实际上是Context组件结合其他两个组件共同构建了一个Bean关系网。

三、Spring中的AOP特性

动态代理的实现