a. 公共接口(接口)
ⅰ. 定义实体类
public class Students implements Serializable {
private static final long serialVersionUID = -7262630058553524151L;
private Integer id;
private String name;
private String sex;
}
ⅱ. 定义接口
public interface StudentsService {
Students queryStudentsInfo(Integer id);
}
b. 提供者
ⅰ. 添加依赖
<dependency>
<groupId>com.rqtancgroupId>
<artifactId>003-interface-apiartifactId>
<version>1.0.0version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-spring-boot-starterartifactId>
<version>2.7.8version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-dependencies-zookeeperartifactId>
<version>2.7.8version>
<type>pomtype>
dependency>
ⅱ. 实现接口
// 使用注解暴露服务接口
@DubboService(interfaceClass = StudentsService.class,version = "1.0.0")
public class StudentsServiceImpl implements StudentsService {
@Override
public Students queryStudentsInfo(Integer id) {
//业务处理
return students;
}
}
ⅲ. application.properties文件配置
#配置服务名称
spring.application.name=Students-Service-Provider
#配置扫描包:扫描@DubboService
dubbo.scan.base-packages=com/rqtanc/serviceprovider
#配置 dubbo协议
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881
#配置注册中心
dubbo.registry.address=zookeeper://localhost:2181
ⅳ. 启动类添加注解
@SpringBootApplication
@EnableDubbo
public class ServiceProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceProviderApplication.class, args);
}
}
c. 消费者
ⅰ. 添加依赖
<dependency>
<groupId>com.rqtancgroupId>
<artifactId>003-interface-apiartifactId>
<version>1.0.0version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-spring-boot-starterartifactId>
<version>2.7.8version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-dependencies-zookeeperartifactId>
<version>2.7.8version>
<type>pomtype>
dependency>
ⅱ. 实现接口
@RestController
public class DubboController {
// 应用远程服务,将创建的代理对象进行注入
@DubboReference(interfaceClass = StudentsService.class,version = "1.0.0")
private StudentsService service;
@GetMapping("/query")
private Students queryinfo(Integer id){
//调用远程接口
Students students = service.queryStudentsInfo(id);
return students;
}
}
ⅲ. application.properties文件配置
#指定服务名称
spring.application.name=consumer-application
#指定注册中心
dubbo.registry.address=zookeeper://localhost:2181
ⅳ. 启动类添加注解
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}