Spring的拓展
1、BeanDefinitionRegistryPostProcessor接口
public class TestBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {
//BeanDefinitionRegistry:bean的注册器,内部只提供了注册方法,类似ServiceCollection
//ConfigurableListableBeanFactory:bean工厂,只能从bean工厂获取bean,只提供了获取bean的方法,类似ServiceProvider
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
//这里适合动态注册BeanDefinition
//在context的refresh方法中的invokeBeanFactoryPostProcessors方法中触发
//如果依赖之前注册的bean需要在postProcessBeanFactory实现
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
//这个方法是在invokeBeanFactoryPostProcessors方法中调用了所有postProcessBeanDefinitionRegistry方法后触发
//注册新的bean如果依赖之前注册的bean,可以直接从beanFactory中拿
}
}

浙公网安备 33010602011771号