Dubbo服务注册过程浅析

本文深入探讨了Dubbo服务在Spring Boot环境下的注册过程。首先介绍了Dubbo依赖的简单引入,接着讲解了Spring Boot如何通过@EnableDubbo、@Service和@Reference注解来整合和配置Dubbo。重点分析了Spring Boot启动Dubbo的三个关键步骤:@DubboComponentScan用于服务扫描和注册,@EnableDubboConfig涉及配置加载,并详细阐述了ServiceBean作为provider核心类,在上下文刷新时执行服务注册的功能。
摘要由CSDN通过智能技术生成

一、Dubbo依赖

dubbo依赖引入比较简单,只需要引用一个jar包,相关的子依赖包即可自动导入:

<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.x.x</version>
</dependency>

二、Spring Boot整合Dubbo

使用springboot整合Dubbo非常简单,包括以下几点:

  • 启动类添加@EnableDubbo注解,即可完成dubbo的启动;
  • 配置文件中相关参数配置格式为:dubbo.xxx;如:dubbo.application.name, dubbo.registry.address, dubbo.registry.client等;
  • 对于provider,对外提供的服务类添加@Service注解即可;
  • 对于consumer,使用@Reference即可注入特定的服务;

三、Spring Boot启动Dubbo过程

要了解Spring Boot如何启动Dubbo,从@EnableDubbo注解开始看起:

@EnableDubboConfig
@DubboComponentScan
public @interface EnableDubbo{
    xxx
}

EnableDubbo其实是以下两个注解的组合:

  • @EnableDubboConfig
  • @DubboComponentScan

这两个注解的作用原理都是基于Spring Boot的@Import注解,详细情况如下:

1、@DubboComponentScan

该注解通过引入DubboComponentScanRegistrar类,将扫描路径添加到bean后处理注册器当中,系统启动时通过该类即可注册相关的Service服务。

2、@EnableDubboConfig

该注解通过引入DubboConfigConfigurationSelector类,可以选择single模式和multiple模式:

DubboConfigConfiguration类的定义如下:

public class DubboConfigConfiguration {

    /**
     * Single Dubbo {@link AbstractConfig Config} Bean Binding
     */
    @EnableDubboConfigBindings({
            @EnableDubboConfigBinding(prefix = "dubbo.application", type = ApplicationConfig.class),
            @EnableDubboConfigBinding(prefix = "dubbo.module", type = ModuleConfig.class),
            @EnableDubboConfigBinding(prefix = "dubbo.registry", type = RegistryConfig.class),
            @EnableDubboConfigBinding(prefix = "dubbo.protocol", type = ProtocolConfig.class),
            @EnableDubboConfigBinding(prefix = "dubbo.monitor", type = MonitorConfig.class),
            @EnableDubboConfigBinding(prefix = "dubbo.provider", type = ProviderConfig.class),
            @EnableDubboConfigBinding(prefix = "dubbo.consumer", type = ConsumerConfig.class)
    })
    static class Single {

    }

    /**
     * Multiple Dubbo {@link AbstractConfig Config} Bean Binding
     */
    @EnableDubboConfigBindings({
            @EnableDubboConfigBinding(prefix = "dubbo.application", type = ApplicationConfig.class, multiple = true),
            @EnableDubboConfigBinding(prefix = "dubbo.module", type = ModuleConfig.class, multiple = true),
            @EnableDubboConfigBinding(prefix = "dubbo.registry", type = RegistryConfig.class, multiple = true),
            @EnableDubboConfigBinding(prefix = "dubbo.protocol", type = ProtocolConfig.class, multiple = true),
            @EnableDubboConfigBinding(prefix = "dubbo.monitor", type = MonitorConfig.class, multiple = true),
            @EnableDubboConfigBinding(prefix = "dubbo.provider", type = ProviderConfig.class, multiple = true),
            @EnableDubboConfigBinding(prefix = "dubbo.consumer", type = ConsumerConfig.class, multiple = true)
    })
    static class Multiple {

    }
}

该类还是一个组合类,由@EnableDubboConfigBindings注解以及@EnableDubboConfigBinding注解组成;

这两个类协同起来将ApplicationConfig,ModuleConfig,RegistryConfig,ProtocolConfig,MonitorConfig,ProviderConfig,ConsumerConfig注册到注册中心。

3、核心类ServiceBean


                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值