(三)springにおけるBeanFacotryPostProcessorの登録及び実行の優先順位及びBeanPostProcessorの登録優先順位


1.springの2大コールバックインタフェース
  • org.springframework.beans.factory.config.BeanFactoryPostProcessor
          BeanFactory         
    
  • org.springframework.beans.factory.config.BeanPostProcessor
            BeanFactory           
    

  • 2.BeanFactoryPostProcessor関連インタフェースの登録+コールバック処理手順
    BeanFactoryPostProcessor        org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor
    
    BeanDefinitionRegistryPostProcessor        void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
         BeanFactory         BeanDefinition                 。    BeanDefinitionRegistry
    
      :
    1.     AbstractApplicationContext  beanFactoryPostProcessors    BeanDefinitionRegistryPostProcessor
          BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
    2. BeanFactory  AbstractRefreshableApplicationContext  BeanFactory  loadBeanDefinition   (       registry     )   
        BeanDefinitionRegistryPostProcessor      PriorityOrdered   BeanDefinition。    getOrder()       
        ((DefaultListableBeanFactory) beanFactory).getDependencyComparator()       OrderComparator.INSTANCE。
          postProcessor.postProcessBeanDefinitionRegistry(registry);
    3. BeanFactory  AbstractRefreshableApplicationContext  BeanFactory  loadBeanDefinition   (     、     registry     )   
        BeanDefinitionRegistryPostProcessor      Ordered   BeanDefinition,    getOrder()       
        ((DefaultListableBeanFactory) beanFactory).getDependencyComparator()       OrderComparator.INSTANCE。
          postProcessor.postProcessBeanDefinitionRegistry(registry);
          :PriorityOrdered Ordered    ,                 PriorityOrdered BeanDefinitionRegistryPostProcessor,
             getOrder()        。
    4.      3      BeanDefinitionRegistryPostProcessor   BeanDefinition,                  BeanDefinition
              (+   )  postProcessor.postProcessBeanDefinitionRegistry(registry);,
                 BeanDefinitionRegistryPostProcessor     。
    5.         BeanPostProcessor  postProcessor.postProcessBeanFactory(beanFactory);
          BeanDefinitionRegistryPostProcessor BeanPostProcessor   ,             postProcessor.postProcessBeanFactory(beanFactory);
          ,            BeanDefinitionRegistryPostProcessor postProcessBeanFactory(beanFactory)   
           AbstractApplicationContext        BeanDefinitionRegistryPostProcessor  1、2、3、4      BeanPostProcessor 
        postProcessBeanFactory(beanFactory)  。
    6.              BeanDefinitionRegistryPostProcessor,         BeanPostProcessor          BeanFactoryPostProcessor 
             BeanPostProcessor      1、ProrityOrdered      2、Ordered     3、            
               
    

    3.BeanPostProcessor関連インタフェースBeanFacotryに登録する手順
    1.   registerBeanPostProcessors(beanFactory);       BeanFactory      
    2.BeanPostProcessorChecker         BeanFacotry BeanPostProcessor
    3.   PriorityOrdered   BeanPostProcessor (  getOrder()  )
    4.   Ordered   BeanPostProcessor(  getOrder()  )
    5.     Order     BeanPostProcessor
    6.     BeanPostProcessor     MergedBeanDefinitionPostProcessor    ,         BeanPostProcessor       
    7.ApplicationListenerDetector  BeanPostProcessor      
    
    
        BeanFacotry