BeanDefinitionRegistryPostProcessor
BeanDefinitionRegistryPostProcessor
BeanDefinitionRegistryPostProcessor继承了BeanFactoryPostProcessor接口,去实现postProcessBeanDefinitionRegistry方法;
bean工厂的bean属性处理容器,就是可以管理我们的bean工厂内所有的beandefinition(未实例化)数据,可以对Bean属性进行修改,当然也可以一处spring中的bean,自定义bean进去。
当系统启动时实现BeanDefinitionRegistryPostProcessor接口就会生效,此时可以debug进去查看具体的对象信息。
PS:当我们继承BeanDefinitionRegistryPostProcessor时,不能通过注解方式使用其他依赖的对象,比如我们需要用到ApplicationContext,可以通过实现对应ApplicationContextAware接口的方式去使用,然后通过ApplicationContext去获取对象。
例如:
public class CustomerBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor, ApplicationContextAware {
private static ApplicationContext applicationContext;
public void postProcessBeanDefinitionRegistry (BeanDefinitionRegistry registry) {
// 可以通过ApplicationContext 来获取对象
applicationContext.getBean("BeanName");
}
// 实现ApplicationContextAware接口的回调方法,设置上下文环境
public void setApplicationContext(ApplicationContext applicationContext ) throws BeansException {
this.applicationContext = applicationContext ;
}
}