自定义BeanDefinitionRegistryPostProcessor 概述 BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,是一种比较特殊的BeanFactoryPostProcessor。BeanDefinitionRegistryPostProcessor中定义的postProcessBeanDefi
自定义BeanDefinitionRegistryPostProcessor
概述
- BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,是一种比较特殊的BeanFactoryPostProcessor。BeanDefinitionRegistryPostProcessor中定义的postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)方法 可以让我们实现自定义的注册bean定义的逻辑。
使用
public class CustomBeanDefinitionRegistry implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { } @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { RootBeanDefinition helloBean = new RootBeanDefinition(Hello.class); //新增Bean定义 registry.registerBeanDefinition("hello", helloBean); } }
//方式一,通过@Bean的方式初始化 @Configuration public class SpringConfiguration { @Bean public CustomBeanDefinitionRegistry customBeanDefinitionRegistry() { return new CustomBeanDefinitionRegistry(); } }
// 方式二,通过@Component的方式初始化 @Component public class CustomizeBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException { //打印当前堆栈信息 Utils.printTrack("execute postProcessBeanDefinitionRegistry"); //创建一个bean的定义类的对象,bean类型是CalculateServiceImpl RootBeanDefinition helloBean = new RootBeanDefinition(CalculateServiceImpl.class); //bean的定义注册到spring环境 beanDefinitionRegistry.registerBeanDefinition("calculateService", helloBean); } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { //打印当前堆栈信息 Utils.printTrack("execute postProcessBeanFactory"); } }
参考
- 自定义BeanDefinitionRegistryPostProcessor - 石头视角 - CSDN博客
- spring4.1.8扩展实战之六:注册bean到spring容器(BeanDefinitionRegistryPostProcessor接口) - 程序员欣宸的博客 - CSDN博客