spring的后置处理器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring的后置处理器相关的知识,希望对你有一定的参考价值。
参考技术A spring的后置处理器有两类,bean后置处理器,bf(BeanFactory)后置处理器。bean后置处理器作用于bean的生命周期,bf的后置处理器作用于bean工厂的生命周期。Spring是一个bean依赖注入容器,容器是BF,它的上级对象是applicationContxt,applicationContxt在容器功能上附加了一下新的功能。我们使用spring时,用的都是applicationConext的实现类。
我们在初始化这些applicationConext时,最终调用的都是org.springframework.context.support.AbstractApplicationContext#refresh方法用于容器的初始化。这个方法是一个模板方法,规定了容器实例化的步骤。其中BF初始化完成后,会调用BF的后置处理器对BF进行后置处理。而后置处理器的调用是在org.springframework.context.support.AbstractApplicationContext#invokeBeanFactoryPostProcessors这个方法中进行的。
BF的后置处理器有两种,BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor。BF后置处理器和BD(BeanDefinition)后置处理器。BD后置处理器是BF后置处理器的子接口。下面是BF后置处理器的api截图。
invokeBeanFactoryPostProcessors方法内,调用后置处理器的步骤如下:
在AnnotationConfigApplicationContext上下文中,会有一个关键的BD后置处理器:ConfigurationClassPostProcessor。它是用来扫描所有交给spring管理的注解类的。将其解析为BD实例放到AC中去。
spring管理的是bean,所以bean的实例化是一个重要的过程。spring是通过org.springframework.beans.factory.support.AbstractBeanFactory#getBean方法实例化并初始化Bean。实例化Bean的过程中,可以通过bean的后置处理器插手Bean的实例化过程。
Bean的实例化过程如下:
在这个过程中,spring内设了8个bean的后置处理器调用点,用来进行扩展。
Bean后置处理器有五种:
Bean后置处理器的API截图:
以上是关于spring的后置处理器的主要内容,如果未能解决你的问题,请参考以下文章