一、背景
從 dubbo 2.6.5 升級到 2.7.0,突然發現好多地方不能用了,dubbo:annotation 直接報紅,原先的 @Service 和 @Reference 中直接報了過時,源碼里面也沒有告知替代的類,真是耍流氓。。
二、dubbo 2.7.0 介紹
Dubbo 2.7.0 添加了異步化支持。異步化支持不再局限於基於 Future 接口的異步,也不再僅僅局限於只能在客戶端異步。具體來說,Dubbo 2.7.0 版本全面擁抱 JDK8,在客戶端開始支持基於 CompletableFuture 的異步編程范式,在服務端支持基於 AsyncContext 的異步模型。
Dubbo 2.7.0 中,通過對 URL 的改造,將注冊中心拆分成了三個中心,分別是注冊中心、配置中心和元數據中心,三者各司其責,不僅有效地解決了上述容量問題,而且很好地適應了微服務的技術架構,用戶可以開始自由選擇適合自己場景的注冊中心和配置中心。
Dubbo 2.7.0 版本在改造的過程中遵循了一個原則,即保持與低版本的兼容性,因此從功能層面來說它是與2.6.x及更低版本完全兼容的。
官方 Dubbo 2.7.0 的說明文檔:http://dubbo.incubator.apache.org/zh-cn/docs/user/versions/version-270.html
三、解決方案
- @Service 和 @Reference 中過時:Package重命名 com.alibaba.dubbo -> org.apache.dubbo
- dubbo:annotation 失效:改掉xml 的命名空間
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- dubbo 配置 -->
<dubbo:application name="ts_provider_common"/>
<dubbo:registry address="${zookeeper.host}" simplified="true"/>
<dubbo:protocol name="dubbo" port="-1"/>
<dubbo:provider timeout="3000" retries="0"/>
<dubbo:consumer check="false"/>
<dubbo:annotation package="com.demo"/>
</beans>