1. 程式人生 > 實用技巧 >聊聊dubbo-go的nacosRegistry

聊聊dubbo-go的nacosRegistry

 自動裝配載入
    1 refresh()
    2 invokeBeanFactoryPostProcessors(beanFactory)
    3 PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors())
    4 ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(beanFactory)
    5 processConfigBeanDefinitions(beanFactory)
        
5.1 找到啟動配置類,App 6 建立 ConfigurationClassParser類=》配置解析類 7 ConfigurationClassParser.parse(candidates)=>解析啟動類 8 processConfigurationClass(ConfigurationClass ) 處理配置類 9 doProcessConfigurationClass(ConfigurationClass configClass, SourceClass sourceClass) 真正的處理配置類 =》這個方法比較重要
=》1 處理配置類中配置的 @PropertySource =》2 處理配置類中配置的 @ComponentScan 如果沒有配置預設掃描當前類路徑下的所有類,並將其註冊到beanFactory中, =》如果掃描的類也是一個配置類,會遞迴processConfigurationClass(ConfigurationClass) 從而加重所有的類 =》3 處理配置類中的 @Import => processImports()此方法會處理“配置解析類”的DeferredImportSelectorHandler屬性,這裡是自動裝配的關鍵
=》4 處理配置類的@ImportResource =》5 處理配置類中的@Bean 10 DeferredImportSelectorHandler.process() =》此時會處理自動裝配,通過一系列的處理最終會呼叫AutoConfigurationImportSelector.getAutoConfigurationEntry()方法來載入spring.fatories中的”org.springframework.boot.autoconfigure.EnableAutoConfiguration“所對應的值 =》配置類載入完成之後 會迴圈遍歷配置類 然後呼叫processConfigurationClass(onfigurationClass)方法處理配置類 11 第9 10 會將所有的配置類都載入到“配置解析類(onfigurationClassParser)”的configurationClasses的集合中 12 建立reader ( ConfigurationClassBeanDefinitionReader) 物件 14 reader.loadBeanDefinitions(configurationClasses)載入所有的配置類 =》遍歷配置類 將配置類中設計的相關bean物件註冊到beanFatory中