6. Springboot快速回顾(集成Dubbo)

Dubbo是实现远程调用的一个框架,阿里巴巴开源的。远程调用就是B服务器可以调用A服务器的方法。大型项目会被拆分成多个模块,部署在不同的服务器上。若将公共模块集中部署在一台服务器上,可以方便其他服务器调用。因此,需要Dubbo。

此外参考Dubbo官方手册,Dubbo自己提供注册中心,需要在provider项目中配置文件里配置dubbo协议才能使用,目前主流的办法是使用zookeeper注册中心。

本案例提供三个模块演示springboot项目如何集成Dubbo
015_interface_api 公用模块

项目类型:maven java工程
描述:存放实体bean和业务接口
负责业务模块:Model,Service

016_springboot_provider :服务提供者

项目类型:SpringBoot web工程
描述:实现业务接口中的接口
负责业务模块:ServiceImpl,Mapper

017_consumer:服务消费者

项目类型:SpringBoot web工程
描述:处理从浏览器客户端发送的请求,就是 Controller 层
负责业务模块:Controller

015_interface_api

在这里插入图片描述
stu类

/**
 * Dubbo 实体 Bean 需实现 Serializable ,否则会报错
 */
public class stu implements Serializable {
    private String name;
    private Integer age;
    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "stu{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}

stuService

public interface stuService {
    stu queryStudent(Integer id);
}

016_springboot_provider

1 导入额外的依赖

在这里插入图片描述

 <!-- 1、导入项目015的依赖-->
        <dependency>
            <groupId>com.zjh</groupId>
            <artifactId>015_interface_api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- 2、导入Dubbo依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>

        <!-- 3、导入Zookeeper依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.8</version>
            <type>pom</type>
            <!-- 禁用zookeeper的日志,因为Dubbo自己也携带了一个,多个日志重复-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

2 实现stuServiceimpl

//写此注解是为了确保注入到容器
@Service

//@DubboService说明:使用dubbo的注解暴露服务,版本号自定义
@DubboService(interfaceClass = stuService.class, version = "1.0" )
public class stuServiceImpl implements stuService {

    @Override
    public stu queryStudent(Integer id) {
        stu student = new stu();
        if( 1001 == id){
            student.setName("zjh");
            student.setAge(10);
            student.setSex("男");
        }

        return student;
    }
}

3 配置application.properties文件

# 配置服务名称 dubbo:application name="名称"
spring.application.name=stuservice-provider

# 配置扫描的包,扫描的@DubboService
dubbo.scan.base-packages=com.zjh.service

# 配置注册中心
dubbo.registry.address=zookeeper://localhost:2181

4 @EnableDubbo注解 启动服务

@SpringBootApplication
//启动Dubbo
@EnableDubbo
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

}

017_consumer

在这里插入图片描述

1 导入额外依赖

在provider依赖的基础上再加一个web依赖

<!-- 4、web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2 实现controller类 并启动


@RestController
//消费者也启动Dubbo
@EnableDubbo
public class DubboController {

    //原本需要@ resource自动注入
    @DubboReference(interfaceClass = stuService.class, version = "1.0")
    private stuService stuservice;

    @RequestMapping("/dubbo/{stu_id}")
    public String HelloSubbo(@PathVariable("stu_id")Integer id){

        stu stu = stuservice.queryStudent(id);
        return "远程调用接口,获取对象:"+stu.toString();
    }

}

3 配置application.properties文件

# dubbo服务命名 dubbo:application name="名称"
spring.application.name=stuservice-consumer

# 注册中心
dubbo.registry.address=zookeeper://localhost:2181

启动项目步骤

  1. 启动安装的zookeeper服务
  2. 依次启动provider服务,consumer服务
  3. 输入localhost:8080/dubbo/id=1001
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值