Back to Javatutorial

Spring组件之BeanPostProcessor

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

1.0.05.0 KB
Original Source

BeanPostProcessor Ϊ spring bean ĺô BeanFactoryPostProcessor``BeanPostProcessor Զ bean в

spring BeanPostProcessor bean ĴִУִʱ:

bean ĴУBeanPostProcessor һִй 8 Σ

  1. ɴ
  2. ƶϹ췽
  3. ȡע
  4. ǷҪע
  5. ʼǰ
  6. ʼ

һЩִе BeanPostProcessor

1. ʲô BeanPostProcessor

BeanPostProcessor ǰʲô BeanPostProcessor£

public interface BeanPostProcessor {

    /**
     * ʼǰִ
     */
    @Nullable
    default Object postProcessBeforeInitialization(Object bean, String beanName) 
            throws BeansException {
        return bean;
    }

    /**
     * ʼִ
     */
    @Nullable
    default Object postProcessAfterInitialization(Object bean, String beanName) 
            throws BeansException {
        return bean;
    }

}

BeanPostProcessor һӿڣ bean ʼǰһЩǿʵӿڣдͿ bean ʼǰһЩˡ

BeanPostProcessor AbstractApplicationContext#registerBeanPostProcessors עᡣ

ʵϣBeanPostProcessor ڶӽӿڣЩǶͳΪ BeanPostProcessorĵҪĿľЩ BeanPostProcessor

2. BeanPostProcessor

2.1 ɴ

  • λãAbstractAutowireCapableBeanFactory#resolveBeforeInstantiation
  • ִзInstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation
  • AbstractAutoProxyCreator#postProcessBeforeInstantiationɴ

2.2 ƶϹ췽

  • λãAbstractAutowireCapableBeanFactory#determineConstructorsFromBeanPostProcessors
  • ִзSmartInstantiationAwareBeanPostProcessor#determineCandidateConstructors
  • AutowiredAnnotationBeanPostProcessor#determineCandidateConstructorsƶϹ췽

2.3 ȡע

  • λãAbstractAutowireCapableBeanFactory#applyMergedBeanDefinitionPostProcessors
  • ִзMergedBeanDefinitionPostProcessor#postProcessMergedBeanDefinition
  • ApplicationListenerDetector#postProcessMergedBeanDefinitionռ ApplicationListener
  • AutowiredAnnotationBeanPostProcessor#postProcessMergedBeanDefinitionұ @Autowired``@Value``@Inject ǵ뷽
  • CommonAnnotationBeanPostProcessor#postProcessMergedBeanDefinitionұ @Resource ǵ뷽
  • InitDestroyAnnotationBeanPostProcessor#postProcessMergedBeanDefinitionұ @PostConstruct``@PreDestroy ǵķ

2.4

  • λãûִУAbstractAutowireCapableBeanFactory#doCreateBean
  • ִзSmartInstantiationAwareBeanPostProcessor#getEarlyBeanReference
  • AbstractAutoProxyCreator#getEarlyBeanReferenceǰɴ

2.5 ǷҪע

  • λãAbstractAutowireCapableBeanFactory#populateBean
  • ִзInstantiationAwareBeanPostProcessor#postProcessAfterInstantiation

2.6

  • λãAbstractAutowireCapableBeanFactory#populateBean
  • ִзInstantiationAwareBeanPostProcessor#postProcessProperties
  • AutowiredAnnotationBeanPostProcessor#postProcessProperties@Autowired``@Value``@Inject ǵ뷽
  • CommonAnnotationBeanPostProcessor#postProcessProperties@Resource ǵ뷽
  • ImportAwareBeanPostProcessor#postProcessPropertiesΪ EnhancedConfiguration ʵ beanFactory

2.7 ʼǰ

  • λãAbstractAutowireCapableBeanFactory#applyBeanPostProcessorsBeforeInitialization
  • ִзBeanPostProcessor#postProcessBeforeInitialization
  • ApplicationContextAwareProcessor#postProcessBeforeInitialization XxxAware ӿڵķ
  • BeanValidationPostProcessor#postProcessBeforeInitialization JSR-303 У
  • ImportAwareBeanPostProcessor#postProcessBeforeInitialization ImportAware ӿڵķ
  • InitDestroyAnnotationBeanPostProcessor#postProcessBeforeInitializationñ @PostConstruct ǵķ
  • LoadTimeWeaverAwareProcessor#postProcessBeforeInitialization LoadTimeWeaverAware ӿڵķ
  • ServletContextAwareProcessor#postProcessBeforeInitialization ServletContextAware ӿڵķ servletContext servletConfig

2.8 ʼ

  • λãAbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization
  • ִзBeanPostProcessor#postProcessAfterInitialization
  • AbstractAdvisingBeanPostProcessor#postProcessAfterInitialization AopInfrastructureBean
  • AbstractAutoProxyCreator#postProcessAfterInitializationɴ
  • AdvisorAdapterRegistrationManager#postProcessAfterInitializationǰ bean AdvisorAdapterע
  • ApplicationListenerDetector#postProcessAfterInitializationǰ bean ApplicationListenerӵ¼
  • BeanPostProcessorChecker#postProcessAfterInitialization˸ log
  • BeanValidationPostProcessor#postProcessAfterInitialization JSR-303 У
  • JmsListenerAnnotationBeanPostProcessor#postProcessAfterInitialization @JmsListener ע
  • ScheduledAnnotationBeanPostProcessor#postProcessAfterInitialization @Scheduled ע
  • SimpleServletPostProcessor#postProcessAfterInitialization Servlet ʵ÷ Servlet#init(ServletConfig)

3. ܽ

һܽЩ BeanPostProcessor:


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