Spring系列学习之Spring核心组件
Spring系列学习之Spring核心组件
程序员七平Spring系列学习之Spring核心组件
前言
- 一、Spring的骨骼架构
- 二、Spring核心组件
- Bean组件
- Context组件
- Core组件
- Ioc容器
- 三、Spring中的AOP特性
- 动态代理的实现
- Spring AOP的实现
- 四、设计模式解析之代理模式
- 五、设计模式解析之策略模式
一、Spring的骨骼架构
Spring中的三个核心组件就是 Core、Context、Bean。
- Bean包装的是Object,而Object必然有数据;
- Context就是给Bean的数据提供生存环境,发现每个Bean之间的关系,为它们建立这种关系并且维护好这种关系。Context就是一个Bean关系的集合,这个关系集合又叫Ioc容器;
- Core就是发现、建立、维护每个Bean之间的关系所需要的一系列工具。
二、核心组件
Bean组件
- Spring Bean的创建是典型的工厂模式,它的顶级接口时BeanFactory。
Bean的定义主要是由BeanDefinition描述。Bean的定义完整地描述了在Spring的配置文件中定义的
节点中所有的信息,包括各种子节点。 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关系网。