1. BeanFactoryPostProcessor
这个接口是用来干什么的?
根据这个接口的注释可以知道,这个接口在 BeanFactory 标准初始化之后调用,来定制和修改BeanFactory的内容;
执行点
更具体一些就是:在所有的bean定义
已经加载(注意这里说的是已经
)到容器,但是bean的实例还未创建。
这个可以从 AbstractApplicationContext 的 refresh方法 的步骤可以观察到,invokeBeanFactoryPostProcessors 的时候执行的,在 finishBeanFactoryInitialization 之前,而finishBeanFactoryInitialization 是用来创建剩余单例,也就是在单例创建之前调用。
2. BeanDefinitionRegistryPostProcessor
用来干什么
这个其实是 BeanFactoryPostProcessor 接口的子接口,增加了一个专门的功能:向容器中再注册一些Bean定义。
执行点
在所有bean定义
将要被加载,注意这里说的是将要
,所以这个接口是比BeanFactoryPostProcessor 更早执行,在Bean定义还没加载的时候就执行;
网友评论