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注解便可,若是提供了版本号须要加版本号,以下所示