本代码版本基于Dubbo2.7.8版本进行源码分析
注册概览
- 扫描所有@DubboService注解, 加载配置文件, 装载注解中的所有属性, 把每个服务都封装成一个ServiceBean, 注入到Spring容器
- 容器启动之后刷新上下文时, 触发事件监听, 调用DubboBootstrap.start()方法进行dubbo服务注册与发布
- 拿到所有服务, 遍历注册中心, 遍历所有协议, 拼接URL
- 对于注册中心进行注册, 然后对于不同协议的服务进行发布
- 针对不同的Protocol执行export方法, 启动服务
- 之后使用javassite技术将发布的服务封装成invoker然后缓存起来
服务发布步骤
// 发布服务注解
@DubboService(protocol = "dubbo")
// 扫描注解
@DubboComponentScan(basePackages = "com.lishunxing.dubbo.springbootdubbodemoprovider.service")
发布形式
- XML
通过编写spring.handler文件, 在里面注册继承了NamespaceHandlerSupport的类
- Annotation
通过@DubboComponentScan注解进行扫描 如果没有使用@DubboComponentScan 也会在自动装配中进行注册 详情请参考代码分析2<
|