カスタムBeanDefinitionRegistryPostProcessor登録bean

2197 ワード

カスタムBeanDefinitionRegistryPostProcessor


概要

  • BeanDefinitionRegistryPostProcessorは、BeanFactoryPostProcessorから継承され、比較的特殊なBeanFactoryPostProcessorです.BeanDefinitionRegistryPostProcessorで定義されたpostProcessBeanDefinitionRegistry(BeanDefinitionRegistry)メソッドは、カスタム登録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拡張実戦の6:beanからspringコンテナへの登録-プログラマー欣宸のブログ-CSDNブログ