dubbo在启动过程中是如何解析配置文件的?
服务提供方配置文件
服务消费方配置
可以看到 上面的配置文件 都是spring的配置文件 。spring在解析配置文件的时候总接口
BeanDefinitionParser
,dubbo正是通过DubboBeanDefinitionParser 的parse()
方法来解析dubbo相关的配置文件的。 spring容器一旦启动就会去解析相应的标签
BeanDefinitionParser接口
通过源码可以产出,每个标签都会对应一个beanDefinition
dubbo名称空间处理器
在此处 注册了很多标签解析器。 每种标签对应一种xxxconfig
而service标签对应的是 ServiceBean
public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean,
ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware,
ApplicationEventPublisherAware {
InitializingBean: 组件创建完对象(设置完属性)以后会回掉InitializingBean的afterPropertiesSet()
ApplicationContextAware:
ApplicationListener<ContextRefreshedEvent>: 应用监听器,监听事件为ContextRefreshedEvent,当整个IOC容器刷新完成(对象都船舰玩以后),就会用回调ApplicationListener.onApplicationEvent()
// 是否有延迟导出 && 是否已导出 && 是不是已被取消导出
if (isDelay() && !isExported() && !isUnexported()) {
// 导出服务
export();
}
}
ApplicationEventPublisherAware: 事件发布器
服务暴漏流程