扩展点-容器初始化

1. BeanFactoryPostProcessor

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

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

执行点

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

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

2. BeanDefinitionRegistryPostProcessor

用来干什么

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

执行点

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。