SpringBoot集成dubbo实现远程调用

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);
        }
    }

你可能感兴趣的:(java,dubbo,spring,boot,java)