zoukankan      html  css  js  c++  java
  • 自定义BeanDefinitionRegistryPostProcessor注册bean

    自定义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");
        }
    }
    
    

    参考

  • 相关阅读:
    socket 常用api
    socket客户端小例
    select和ioctl的一个简单测试
    git 相关配置
    pvr转png
    flash 中matrix
    moto x使用注意事项
    互联网思维将颠覆我们的认知
    微信公众账号怎么快速增加粉丝
    Discuz如何解除某个会员的QQ绑定状态
  • 原文地址:https://www.cnblogs.com/frankltf/p/11369234.html
Copyright © 2011-2022 走看看