扩展点-容器初始化

2020-05-30  本文已影响0人  lsh的学习笔记

1. BeanFactoryPostProcessor

这个接口是用来干什么的?

根据这个接口的注释可以知道,这个接口在 BeanFactory 标准初始化之后调用,来定制和修改BeanFactory的内容;

执行点

更具体一些就是:在所有的bean定义已经加载(注意这里说的是已经)到容器,但是bean的实例还未创建。

这个可以从 AbstractApplicationContext 的 refresh方法 的步骤可以观察到,invokeBeanFactoryPostProcessors 的时候执行的,在 finishBeanFactoryInitialization 之前,而finishBeanFactoryInitialization 是用来创建剩余单例,也就是在单例创建之前调用。

2. BeanDefinitionRegistryPostProcessor

用来干什么

这个其实是 BeanFactoryPostProcessor 接口的子接口,增加了一个专门的功能:向容器中再注册一些Bean定义。

执行点

在所有bean定义将要被加载,注意这里说的是将要,所以这个接口是比BeanFactoryPostProcessor 更早执行,在Bean定义还没加载的时候就执行;

上一篇 下一篇

猜你喜欢

热点阅读