springboot1.x和springboot2.x整合差距挺大的,基於最新的2.x進行整合,使用純註解的方式git
首先pom文件的依賴引入,maven倉庫有Apache和alibaba兩個github
Dubbo早已孵化完成,破殼而出,成爲Apache頂級項目,這裏引用Apache的maven依賴web
採用maven聚合項目,架構如圖所示spring
詳細層級結構圖apache
api 公用的entity和service接口api
provider-log log服務提供方tomcat
provider-message message服務提供方springboot
consumer 消費方架構
頂級pom.xml引入spring-boot-starter-parent,使用新版2.1.6.releaseapp
三個聚合模塊
<modules> <module>api</module> <module>provider-log</module> <module>provider-message</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
api模塊用於提供dubbo服務接口,因此將dubbo的依賴添加在api裏面,是有些不妥
api->pom.xml
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>2.7.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> <type>pom</type> </dependency>
其他的三個工程,都是引入父工程,依賴引入api,spring-boot-starter-web可選,提供web服務的話加上,不提供服務能夠不加
<parent> <groupId>com.chy.wx</groupId> <artifactId>spring-boot-dubbo</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>com.chy.wx</groupId> <artifactId>sea-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
api添加兩個entity和兩個service,更有區分性
兩個提供者provider,爲的是更有區分性,application配置,這裏採用yuml語法。
跟springboot1.x的區別是,dubbo單獨開頭,前面並無spring
server: port: 8081 dubbo: application: name: sea-provider-log registry: protocol: zookeeper address: 192.168.1.222:2181 protocol: name: dubbo port: 20887 version: 1.0.0 scan: base-packages: com.log
發佈的服務經過@Service註解,加載被掃描的實現類上面,這裏使用的是dubbo的註解
啓動類上面添加@EnableDubbo註解
經過以下命令進入dubbo
telnet 192.168.1.222 21880
查看發佈的服務使用ls
以下表示ErrorLogService發佈成功,且版本爲1.0.0
更多命令查看 Telnet 命令參考手冊
感受不直觀能夠下載dubbo-admin監控工程,配置application.xml,以後啓動查看
release版本 https://github.com/apache/dubbo/releases 下載運行便可
或者下載我已經上傳的dubbo-admin.war包(博客園上傳限制爲10M)
連接:https://pan.baidu.com/s/18QSZLySLj8az11ebQJvG1Q
提取碼:2jgy
以爲慢快速下載地址:https://download.csdn.net/download/qq_37933127/10569470
將war包放入tomcat的webapps目錄下,啓動會自動解壓
以後將application.xml修改爲本身的zookeeper地址便可
默認用戶名和密碼都爲root
啓動訪問便可,默認的根路徑爲文件夾的名字,訪問如圖所示便可以看詳細信息
web調用方使用@Reference註解便可,若是提供了版本號須要加版本號,以下所示