dubbo在啟動過程中是如何解析配置文件的滑蚯?
服務提供方配置文件
服務消費方配置
可以看到 上面的配置文件 都是spring的配置文件 替裆。spring在解析配置文件的時候總接口
BeanDefinitionParser
均唉,dubbo正是通過DubboBeanDefinitionParser 的parse()
方法來解析dubbo相關的配置文件的斋陪。 spring容器一旦啟動就會去解析相應的標簽
BeanDefinitionParser接口
通過源碼可以產(chǎn)出翰撑,每個標簽都會對應一個beanDefinition
dubbo名稱空間處理器
在此處 注冊了很多標簽解析器。 每種標簽對應一種xxxconfig
而service標簽對應的是 ServiceBean
public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean,
ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware,
ApplicationEventPublisherAware {
InitializingBean: 組件創(chuàng)建完對象(設置完屬性)以后會回掉InitializingBean的afterPropertiesSet()
ApplicationContextAware:
ApplicationListener<ContextRefreshedEvent>: 應用監(jiān)聽器遵倦,監(jiān)聽事件為ContextRefreshedEvent尽超,當整個IOC容器刷新完成(對象都船艦玩以后),就會用回調(diào)ApplicationListener.onApplicationEvent()
// 是否有延遲導出 && 是否已導出 && 是不是已被取消導出
if (isDelay() && !isExported() && !isUnexported()) {
// 導出服務
export();
}
}
ApplicationEventPublisherAware: 事件發(fā)布器
服務暴漏流程