Dubbo 常见注解详解

Dubbo 常见注解详解

Dubbo 提供了多个核心注解用于服务提供者和消费者的配置,以下是主要注解的详细说明:


一、服务提供者相关注解

1. @DubboService(服务提供者注解)

作用:标记一个类为 Dubbo 服务提供者
位置:标注在实现类上
常用参数

@DubboService(
    interfaceClass = UserService.class,  // 指定接口类(可选,默认自动推断)
    version = "1.0.0",                   // 服务版本号
    group = "prod",                      // 服务分组
    protocol = "dubbo",                  // 协议类型(默认dubbo)
    port = 20880                         // 监听端口(默认随机)
)
public class UserServiceImpl implements UserService {
    // 实现方法...
}

特点

  • 替代旧版的 @Service 注解(避免与 Spring 的 @Service 冲突)
  • 支持多协议暴露(如同时暴露 Dubbo 和 REST 协议)

二、服务消费者相关注解

2. @DubboReference(服务引用注解)

作用:在消费者端引用远程 Dubbo 服务
位置:标注在接口类型的成员变量上
常用参数

@DubboReference(
    version = "1.0.0",       // 指定服务版本
    group = "prod",          // 指定服务分组
    timeout = 3000,          // 调用超时时间(毫秒)
    retries = 1,             // 重试次数(总共尝试 retries+1 次)
    cluster = "failover"     // 集群容错策略
)
private UserService userService;

特点

  • 替代旧版的 @Reference 注解
  • 支持动态配置(可通过 @DubboReference 注解或全局配置覆盖)

三、配置相关注解

3. @DubboConfiguration(Dubbo 配置类注解)

作用:标记一个类为 Dubbo 的配置类
位置:标注在配置类上(类似 Spring 的 @Configuration
示例

@DubboConfiguration
public class DubboConfig {
    // 可在此类中定义 Dubbo 相关 Bean
}

特点

  • 用于组织 Dubbo 相关的配置(如自定义 ApplicationConfigRegistryConfig 等)
  • 替代旧版的 @DubboComponentScan(新版已集成到 Spring Boot 自动配置)

四、其他重要注解

4. @DubboFilter(过滤器注解)

作用:自定义 Dubbo 的过滤器(拦截器)
位置:标注在过滤器实现类上
示例

@DubboFilter
public class MyFilter implements Filter {
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        // 前置处理...
        Result result = invoker.invoke(invocation);
        // 后置处理...
        return result;
    }
}

特点

  • 用于实现日志、监控、限流等横切逻辑
  • 替代旧版的 @Activate 注解(新版通过 @DubboFilter + @Activate 组合)

5. @Activate(激活条件注解)

作用:控制过滤器的激活条件
位置:标注在过滤器类上(与 @DubboFilter 配合使用)
示例

@DubboFilter
@Activate(group = {"provider", "consumer"})  // 在 Provider 和 Consumer 端都激活
public class MyFilter implements Filter {
    // ...
}

参数

  • group:指定生效的端(provider/consumer/all
  • value:指定激活条件(如 url 包含特定参数)

五、新旧版本注解对比

注解新版(Dubbo 2.7+)旧版(Dubbo 2.6及之前)说明
服务提供者@DubboService@Service新版避免与 Spring 冲突
服务消费者@DubboReference@Reference新版功能更完善
配置类@DubboConfiguration无直接替代新版整合到 Spring Boot
过滤器@DubboFilter + @Activate@Activate新版更清晰

六、最佳实践建议

  1. 统一使用新版注解

    • 新项目必须使用 @DubboService@DubboReference
    • 旧项目升级时逐步替换
  2. 合理配置参数

    • 生产环境建议:
      • @DubboReference 设置 check = false(避免启动依赖)
      • 合理设置 timeoutretries
    • 测试环境可以设置 check = true
  3. 结合 Spring Boot 自动配置

    • 新版 Dubbo 已深度集成 Spring Boot,大部分配置可通过 application.yml 完成
    • 注解主要用于特殊场景(如自定义过滤器)

七、完整示例

服务提供者端:

@DubboService(version = "1.0.0")
public class UserServiceImpl implements UserService {
    @Override
    public String getUserInfo(String userId) {
        return "User-" + userId;
    }
}

服务消费者端:

@Service
public class OrderService {
    @DubboReference(version = "1.0.0", timeout = 3000)
    private UserService userService;

    public void processOrder() {
        String userInfo = userService.getUserInfo("123");
        System.out.println(userInfo);
    }
}

⚠️ 注意:新版 Dubbo 的注解设计更清晰,与 Spring 生态集成更好,建议新项目直接使用新版注解体系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值