| 参数 | 类型 | 必填 | 说明 |
|---|
interfaceName | String | 否 | 指定要导出的接口全限定名。当实现类实现了多个接口时,必须用此参数指定要暴露哪一个。 |
interfaceClass | Class<?> | 否 | 与 interfaceName 功能相同,但用 Class 类型指定。通常用 UserService.class 这种写法。 |
version | String | 否 | 服务版本号,如 "1.0.0"。用于多版本隔离和灰度发布,强烈建议生产环境配置。 |
group | String | 否 | 服务分组,如 "order"、"user"。用于同一接口的多个不同实现做逻辑隔离。 |
| 样例: | | | |
@DubboService(interfaceClass = UserService.class, version = "2.0.0", group = "vip")
public class VipUserServiceImpl implements UserService, AdminService {
// 这个服务暴露的是 UserService 接口,版本 2.0.0,分组为 vip
}
| 参数 | 类型 | 必填 | 说明 |
|---|
registry | String[] | 否 | 指定要注册到哪些注册中心,对应配置中的 <dubbo:registry id="...">。不指定则注册到所有注册中心。 |
register | boolean | 否 | 是否注册到注册中心。false 表示只启动本地服务,不对外暴露(用于只消费不提供的场景)。默认 true。 |
dynamic | boolean | 否 | 是否为动态注册。false 表示服务被禁用后,注册中心仍保留节点(需手动删除)。默认 true。 |
| 样例: | | | |
@DubboService(registry = {"zkRegistry", "nacosRegistry"}, register = true)
public class UserServiceImpl implements UserService {}
| 参数 | 类型 | 必填 | 说明 |
|---|
protocol | String | 否 | 指定使用的协议名称,如 "dubbo"、"rest"、"hessian"。对应 <dubbo:protocol name="...">。不指定则使用全局默认协议。 |
host | String | 否 | 服务暴露的主机 IP。不指定则自动获取本机 IP。多网卡环境必须手动指定,否则会绑定错误网卡。 |
port | int | 否 | 服务暴露的端口。不指定则使用协议默认端口(dubbo 默认为 20880)。 |
anyhost | boolean | 否 | 是否允许任意主机访问。默认 false。生产环境建议保持默认。 |
| 样例: | | | |
@DubboService(protocol = "dubbo", host = "192.168.1.100", port = 20881)
public class UserServiceImpl implements UserService {}
| 参数 | 类型 | 必填 | 说明 |
|---|
timeout | int | 否 | 服务方法调用的超时时间(毫秒)。默认 1000ms。这是最常调整的参数。 |
retries | int | 否 | 失败重试次数,不包括第一次调用。默认 2(即最多重试 2 次,共调用 3 次)。 |
loadbalance | String | 否 | 负载均衡策略:"random"(随机)、"roundrobin"(轮询)、"leastactive"(最少活跃)、"consistenthash"(一致性哈希)。默认 "random"。 |
executes | int | 否 | 服务提供者端并发执行数限制,即最大线程数。默认 0(不限制)。 |
actives | int | 否 | 每个服务消费者的最大并发调用数,用于限流。默认 0(不限制)。 |
weight | int | 否 | 服务权重,仅用于负载均衡计算。默认 100。 |
delay | int | 否 | 服务延迟暴露的时间(毫秒)。默认 -1(无延迟)。 |
@DubboService(timeout = 3000, retries = 1, loadbalance = "leastactive", executes = 50)
public class UserServiceImpl implements UserService {}
| 参数 | 类型 | 必填 | 说明 |
|---|
proxy | String | 否 | 代理方式:"javassist"(默认)或 "jdk"。 |
cluster | String | 否 | 集群容错模式:"failover"(失败切换)、"failfast"(快速失败)、"failsafe"(安全失败)、"failback"(失败自动恢复)、"forking"(并行调用)。默认 "failover"。 |
connections | int | 否 | 对每个提供者建立的连接数。默认 0(单连接)。 |
token | String/boolean | 否 | 是否启用令牌验证。"true" 表示服务端生成 token,消费者需携带。用于防攻击。默认 false。 |
stub | String/Class | 否 | 本地存根类路径。用于在本地包装部分逻辑(如缓存、预处理)。 |
mock | String/Class | 否 | 本地 Mock 实现类路径。用于服务降级,当远程调用失败时返回预设值。 |
filter | String[] | 否 | 自定义过滤器,如 "tps"(限流)、"accesslog"(访问日志)。覆盖全局配置。 |
listener | String[] | 否 | 自定义监听器,用于监听服务导出和调用事件。 |
accesslog | String/boolean | 否 | 是否记录访问日志。"true" 表示记录到默认日志文件。也可指定文件路径。 |
cache | String | 否 | 方法调用结果缓存策略:"lru"、"threadlocal"、"jcache"。 |
validation | String | 否 | 是否启用 JSR303 参数校验。"true" 表示开启。 |
async | boolean | 否 | 是否异步执行。默认 false。 |
sent | boolean | 否 | 异步调用时,是否等待消息发送成功。默认 true。 |
deprecated | boolean | 否 | 是否标记为废弃方法。默认 false。 |
documentation | String | 否 | 服务文档描述,用于生成接口文档。 |
| 层级 | 配置来源 | 示例 |
|---|
| 方法级 | @Method 注解 | 针对 getById() 方法单独设置 timeout=5000 |
| 接口级 | @DubboService 注解 | 针对整个 UserService 接口设置 timeout=1000 |
| 提供者级 | <dubbo:provider> 或 ProviderConfig | 针对当前服务提供者应用的所有服务统一设置 |
| 应用级 | <dubbo:application> 或 ApplicationConfig | 针对整个 Dubbo 应用统一设置 |
| 全局默认 | Dubbo 框架内置 | timeout 默认 1000ms,retries 默认 2 等 |
| 方法级 > 接口级 > 提供者级 > 应用级 > 全局默认 | | |