概述
spring context在大部分java应用中都有使用,其提供了许多扩展接口给在spring平台上进行增强扩展提供了方便。熟悉spring初始化context时各个阶段的流程,对于开发基于spring的框架时会得心应手。本文的application context refresh思维导图大纲,是参照以下来整理的:
org.springframework.context.support.AbstractApplicationContext
org.springframework.context.support.GenericApplicationContext
扩展接口
这里的扩展接口指的是不继承AbstractApplicationContext的前提下,在spring context初始化流程的时候扫描对应的接口bean达到的扩展。常用的扩展接口有:
BeanFactory预处理器
org.springframework.beans.factory.config.BeanFactoryPostProcessor
- org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor
Bean预处理器
org.springframework.beans.factory.config.BeanPostProcessor
- org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor
- org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor
- org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor
- org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor
应用监听器
org.springframework.context.ApplicationListener<E extends ApplicationEvent>
ApplicationEvent对应的的事件可以有:
- org.springframework.context.event.ApplicationContextEvent
-- org.springframework.context.event.ContextClosedEvent
-- org.springframework.context.event.ContextRefreshedEvent
-- org.springframework.context.event.ContextStartedEvent
-- org.springframework.context.event.ContextStoppedEvent- org.springframework.web.context.support.RequestHandledEvent
-- org.springframework.web.context.support.ServletRequestHandledEvent
类型转换器
java.beans.PropertyEditor
通常继承java.beans.PropertyEditorSupport重写setAsText和getAsText方法
整体流程结构图
总结
spring context初始化过程提供了许多接口,为扩展框架、增强功能提供了方便。本篇文章主要是对一些常用扩展点进行概要介绍,详细介绍、使用帮助、应用场景请浏览后续某个扩展点的专题文章介绍。