1.不同时间的三组注解
在旧版本中,Dubbo使用自己的@Service、@Referenc注解来标注服务与引用。
或许是想与spring等框架的注解区分开,在2.7.7版本后,源码中的@Service、@Referenc被打上了@Deprecated注解,它们被使用的地方都被拦腰打上了横线,表示不建议使用。
定位到它们所在路径,发现总共有三种相似的注解
其实它们是Dubbo的三个不同时期的产物,它们的全路径名称如下
// 2.7.x 之前,Alibaba时期
com.alibaba.dubbo.config.annotation.Reference
com.alibaba.dubbo.config.annotation.Service
// 2.7.0之后,Apache时期
org.apache.dubbo.config.annotation.Reference
org.apache.dubbo.config.annotation.Service
// 2.7.7之后
org.apache.dubbo.config.annotation.DubboReference
org.apache.dubbo.config.annotation.DubboService
2.注解的升级
2.1 @Reference
@Reference 相关注解用来引用服务
2.1.1 Alibaba @Reference -> Apache @Reference
2.1.1.1 注解升级
新增注解,路径从com.alibaba变成org.apache,旧注解打上@Deprecated
2.1.1.2 属性增加
2.7.0的Apache版本,比Alibaba的@Reference注解多了protocol、tags、methods、id五个属性,这次升级后,开发者可以做通过protocol指定协议等操作。
2.1.2 @Reference -> @DubboReference
2.1.2.1 注解升级
2.2.7版本,主要是新注解名称加上Dubbo前缀,显得更直观,旧注解打上@Deprecated
2.1.2.2 属性增加
同时增加了merger、services属性
2.2 @Service
@Service 相关注解用来暴露服务
2.2.1 Alibaba @Service -> Apache @Service
2.2.1.1 注解升级
新增注解,路径从com.alibaba变成org.apache,旧注解打上@Deprecated
2.2.1.2 属性修改与增加
2.7.0的Apache版本,
将export、register的默认值从false改为true,
将回调callbacks默认值从空改为1,
将重试次数retries默认值从空改为2
将负载均衡loadbalance默认值从空改为rodom随机
增加了methods、id两个属性
2.2.2 @Service -> @DubboService
2.2.1.1 注解升级
2.2.7版本,主要是新注解名称加上Dubbo前缀,显得更直观,旧注解打上@Deprecated,属性一点没改,改名的目的很单纯