一、新增依赖
向父工程新增依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- springboot的依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 关联子模块 --> <modules> <module>demo-provider</module> <module>demo-consumer1</module> <module>demo-api</module> </modules> <!-- 父工程的包设置为pom --> <packaging> pom </packaging> <groupId>com.example</groupId> <artifactId>nacosdemonew</artifactId> <version>0.0.1-SNAPSHOT</version> <name>nacosdemonew</name> <description>Demo project for SpringCloud Alibaba</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.7.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.7.RELEASE</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> <version>2.2.7.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.spring</groupId> <artifactId>spring-context-support</artifactId> <version>1.0.11</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
新增了
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> <version>2.2.7.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.spring</groupId> <artifactId>spring-context-support</artifactId> <version>1.0.11</version> </dependency>
注意:要排除 org.springframework.spring和引入上面的support依赖否则要报错(这个坑搞了一天)。
二、新增Api服务
新建一个APi子工程,专门存放远程调用的接口,如下图:
三、改造服务提供方
1、新增一个远程调用接口的实现类,实现上面在Api服务新增的接口,用Dubbo的DubboService注解,表示这是一个Dubbo的service层
2、在启动类新增一个开启Dubbo的注解
3、修改配置类
设置如上参数,为了方便,我把dubbo的name设置为了spring的name同名。
scan的base-packages的值为dubboservice注解所在的实现类的路径,格式如上图。
protocol等参数默认上图的设置即可。
registry.address的设置也默认上图。
四、改造服务消费方
1、修改配置文件
每个服务都可以作为服务消费者和提供者,所有都可以设置base-packages设置dubboservice注解的接口实现类。
subscribed-services则是填写调用服务端的名称,一定要写正确,否则会报错。
2、修改controller,新增一个测试Dubbo的接口
通过@DubboReference注解注入Api服务的TestService接口类,新写一个方法调用接口类的方法,如上图。
3、在启动类新增一个开启Dubbo的注解
五、测试
1、运行服务提供方和消费方两个服务。
2、通过postman测试
调用成功,在consumer服务调用api服务的接口(中间过程)成功返回provider服务的实现类里面的逻辑处理结果。