docs/Spring全家桶/Spring源码分析/Spring组件分析/Spring组件之BeanFactoryPostProcessor.md
BeanFactoryPostProcessorBeanFactoryPostProcessor 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 һġ
BeanFactoryPostProcessor ṩĹBeanFactoryPostProcessor ṩĹܡ
BeanFactoryPostProcessor̽ǰ˽ BeanFactoryPostProcessor ṩ
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
throws BeansException;
÷ֻһConfigurableListableBeanFactory˽ BeanFactoryPostProcessor ΪʲôҪ֪ṩЩܣ
set
֮⣬ register
ЩǾͿԶƻ beanFactory һЩΪˡ
BeanDefinitionRegistryPostProcessorҲ˽ BeanDefinitionRegistryPostProcessor ṩķ
void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
throws BeansException;
IJ BeanDefinitionRegistryǸ BeanDefinition עṩ·
ԿҪΧ BeanDefinition ȽҪķо£
BeanDefinitionRegistry#containsBeanDefinitionǷָƵ BeanDefinitionBeanDefinitionRegistry#getBeanDefinitionȡָƵ BeanDefinitionBeanDefinitionRegistry#registerBeanDefinitionעһ BeanDefinitionBeanDefinitionRegistry#removeBeanDefinitionƳ BeanDefinitionBeanFactoryPostProcessorspring һ BeanFactoryPostProcessor ʵ࣬Ϣ£
EventListenerMethodProcessor
BeanFactoryPostProcessor``SmartInitializingSingleton ӿBeanDefinitionRegistryPostProcessor#postProcessBeanFactory лȡ EventListenerFactorySmartInitializingSingleton#afterSingletonsInstantiated д @EventListener עConfigurationClassPostProcessor
AnnotationConfigUtils#registerAnnotationConfigProcessors(BeanDefinitionRegistry, Object) עBeanDefinitionRegistryPostProcessor ӿ@Conditional ע@Component ע@PropertySource/@PropertySources ע@ComponentScan/@ComponentScans ע@Import ע@ImportResource ע@Bean ע@Configuration עEventListenerMethodProcessor @EventListener ķԲοspring Դspring ֮̽ע @EventListener.
ConfigurationClassPostProcessor ע̣Բο
Ľ BeanFactoryPostProcessor ĸ˵ BeanFactoryPostProcessor ʹãԼ spring ṩ BeanFactoryPostProcessor ʵࣺEventListenerMethodProcessor ConfigurationClassPostProcessor
ԭӣhttps://my.oschina.net/funcy/blog/4597545 ߸ˮƽд֮ӭָԭףҵתϵȨҵתע