Back to Javatutorial

Spring组件之BeanFactoryPostProcessor

docs/Spring全家桶/Spring源码分析/Spring组件分析/Spring组件之BeanFactoryPostProcessor.md

1.0.04.5 KB
Original Source

1. ʲô BeanFactoryPostProcessor

BeanFactoryPostProcessor spring beanFactory ĺôƻ beanFactory һЩΪ

spring Ϊṩ BeanFactoryPostProcessor

  • org.springframework.beans.factory.config.BeanFactoryPostProcessor

    /**
     * beanFactory ĺôԸı beanFactory һЩΪ
     */
    public interface BeanFactoryPostProcessor {
    
        /**
         *  beanFactory ķΪ beanFactoryʵ DefaultListableBeanFactory
         */
        void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) 
                throws BeansException;
    
    }
    
    
  • org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor

    /**
     * BeanDefinition עע beanDefinition 
     * ̳ BeanFactoryPostProcessor ӿڣ
     * Ҳд BeanFactoryPostProcessor#postProcessBeanFactory 
     * 
     */
    public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {
    
        /**
         * 1\. ÷ BeanDefinitionRegistryPostProcessor#postProcessBeanFactory ִ
         * 2\. Ϊ registryʵ DefaultListableBeanFactoryҲʹ beanFactory IJ
         */
        void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) 
                throws BeansException;
    
    }
    
    

BeanFactoryPostProcessor AbstractApplicationContext#invokeBeanFactoryPostProcessors бִУִʱִ BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistryִ BeanFactoryPostProcessor#postProcessBeanFactoryķԲο spring ִ֮ BeanFactoryPostProcessor һġ

2. BeanFactoryPostProcessor ṩĹ

BeanFactoryPostProcessor ṩĹܡ

2.1 BeanFactoryPostProcessor

̽ǰ˽ BeanFactoryPostProcessor

void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) 
        throws BeansException;

÷ֻһConfigurableListableBeanFactory˽ BeanFactoryPostProcessor ΪʲôҪ֪ṩЩܣ

set

֮⣬ register

ЩǾͿԶƻ beanFactory һЩΪˡ

2.2 BeanDefinitionRegistryPostProcessor

Ҳ˽ BeanDefinitionRegistryPostProcessor ṩķ

void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) 
        throws BeansException;

IJ BeanDefinitionRegistryǸ BeanDefinition עṩ·

ԿҪΧ BeanDefinition ȽҪķо£

  • BeanDefinitionRegistry#containsBeanDefinitionǷָƵ BeanDefinition
  • BeanDefinitionRegistry#getBeanDefinitionȡָƵ BeanDefinition
  • BeanDefinitionRegistry#registerBeanDefinitionעһ BeanDefinition
  • BeanDefinitionRegistry#removeBeanDefinitionƳ BeanDefinition

3. spring ṩ BeanFactoryPostProcessor

spring һ BeanFactoryPostProcessor ʵ࣬Ϣ£

  • EventListenerMethodProcessor

    • ʵ BeanFactoryPostProcessor``SmartInitializingSingleton ӿ
    • BeanDefinitionRegistryPostProcessor#postProcessBeanFactory лȡ EventListenerFactory
    • SmartInitializingSingleton#afterSingletonsInstantiated д @EventListener ע
  • ConfigurationClassPostProcessor

    • AnnotationConfigUtils#registerAnnotationConfigProcessors(BeanDefinitionRegistry, Object) ע
    • ʵ BeanDefinitionRegistryPostProcessor ӿ
    • @Conditional ע
    • @Component ע
    • @PropertySource/@PropertySources ע
    • @ComponentScan/@ComponentScans ע
    • @Import ע
    • @ImportResource ע
    • @Bean ע
    • @Configuration ע

EventListenerMethodProcessor @EventListener ķԲοspring Դspring ֮̽ע @EventListener.

ConfigurationClassPostProcessor ע̣Բο

4. ܽ

Ľ BeanFactoryPostProcessor ĸ˵ BeanFactoryPostProcessor ʹãԼ spring ṩ BeanFactoryPostProcessor ʵࣺEventListenerMethodProcessor ConfigurationClassPostProcessor


ԭӣhttps://my.oschina.net/funcy/blog/4597545 ߸ˮƽд֮ӭָԭףҵתϵ߻Ȩҵתע