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,屬性一點沒改,改名的目的很單純