1.1、提供者 provider 引入Maven坐标
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!--zookeeper版本一定要匹配! -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-zookeeper</artifactId>
<version>2.7.8</version>
</dependency>
1.2、提供者 provider 配置yml
server:
port: 8081
dubbo:
registry:
address: zookeeper://127.0.0.1:2181
timeout: 200000
application:
name: dubbo-provider
protocol:
port: 20880
name: dubbo
1.3、编写 server 层
//接口
public interface ProviderService {
String getName();
}
//替换掉Springboot的注解@Service 声明这是一个Dubbo层
@DubboService
public class ProviderServiceImpl implements ProviderService {
@Override
public String getName() {
System.out.println("======dubbo接口被调用了======");
return "DubboTest";
}
}
1.4、再启动类上添加注解
@EnableDubbo
2.1 消费者 consumer 引入Maven坐标
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!--zookeeper版本一定要匹配! -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-zookeeper</artifactId>
<version>2.7.8</version>
</dependency>
<!-- 需要格外引入提供者 provider 用于调用接口 -->
<dependency>
<groupId>com.itheima</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2.2、配置消费者 comsumer 的yml文件
server:
port: 8082
dubbo:
registry:
address: zookeeper://127.0.0.1:2181
timeout: 20000
application:
name: dubbo-consumer
protocol:
port: 30000
name: dubbo
2.3、编写 service 层
//编写一个相同类
public interface ConsumerServer {
String userName();
}
//替换掉Springboot的注解@Service 声明这是一个Dubbo层
@DubboService
public class ConsumerServerImpl implements ConsumerServer {
//使用注解来和获取提供者 provider 的接口方法
@DubboReference(check = false)
private ProviderService providerService;
@Override
public String userName() {
//直接进行调用
return providerService.getName();
}
}
3、验证
@RestController
@RequestMapping("/user")
public class UserController {
//使用@Autowired会爆红也可以正常运行
@Resource
private ConsumerServer consumerUserService;
@GetMapping("/user_name")
public String userName(){
return consumerUserService.userName();
}
}