spring注解驱动开发-(12) BeanFactory 和 BeanDefinitionRegistry

1. BeanFactory

Bean工厂: 创建和获取Bean

2. BeanDefinitionRegistry

负责BeanDefinition登记到ioc容器;

3. AnnotationConfigApplicationContext

这个类既有 BeanFactory的功能, 又有BeanDefinitionRegistry的功能, 两个接口都实现了;

image.png

所以, 在 BeanFactoryPostProcessor 的子接口BeanDefinitionRegistryPostProcessor的接口的两个方法中:

// 1. BeanDefinitionRegistryPostProcessor 自己新增的方法: 
// 在
void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException;
// 2. BeanFactoryPostProcessor接口的方法
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;

1. postProcessBeanDefinitionRegistry 要先于 postProcessBeanFactory 执行;

postProcessBeanDefinitionRegistry()方法的执行时机是: 容器中所有的bean定义将要被加载前!

postProcessBeanFactory() 方法的执行时机是: 容器中所有的bean已经保存加载, 但bean还未创建!

2. postProcessBeanDefinitionRegistry 中可以通过 registry向spring容器中注册bean;

3. postProcessBeanFactory 中可以通过 beanFactory从spring容器中获取bean;

你可能感兴趣的:(spring,ioc)