spring原始碼之BeanDefinitionRegistryPostProcessor介面的呼叫-invokeBeanFactoryPostProcessor()
阿新 • • 發佈:2021-08-01
前兩篇文章講了obtainFreshBeanFactory()方法,該方法主要是進行xml解析並封裝成BeanDefinition,今天我們接著refresh()核心方法往下看invokeBeanFactoryPostProcessor()方法,該方法主要完成對實現了BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor介面實現類的呼叫。BeanDefinitionRegistryPostProcessor介面繼承自BeanFactoryPostProcessor介面。
1.refresh()方法如下:
2.進入invokeBeanFactoryPostProcessors()方法
3.進入PostProcessorRegistractionDelegate類的invokeBeanFactoryPostProcessors()方法
4.完成方法呼叫
invokeBeanFactoryPostProcessor()方法主要就是完成對實現了BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessror介面的呼叫,首先從BeanFactory中獲取相應型別的beanName陣列,然後遍歷陣列,判斷是否實兩個現排序介面,然後進行例項化,加入容器中,然後排序,註冊,進行方法呼叫。