教你springboot+dubbo快速启动的方法

 更新时间:2022年04月01日 11:25:58   作者:波波的。  
这篇文章主要介绍了springboot+dubbo快速启动的方法,dubbo的角色广泛的分为三类provider,comsumer,注册中心,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下

前言

现在用dubbo的太多了,我到现在还不熟悉,这太不应该了,这次好好看了一下dubbo,终于把基本的启动框架搭好了。dubbo的角色宽泛的分三类provider,comsumer,注册中心。我这里的注册中心用的是zookeeper,并且是在windows环境下做的。

dubbo和springboot整合的依赖:

<dependency>
   <groupId>com.alibaba.boot</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>0.2.0</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

实操

1、创建一个大的maven项目,将里面的src目录删掉,这只是为了在这个大的maven项目里面添加provider和comsumer两个模块。之后创建两个springboot项目,分别是provider和comsumer,创建好的结构:

在这里插入图片描述

这里的common模块我是把entity和接口类抽出来,不抽出来也是可以的

2、common(这里面没有任何依赖,就是个maven项目)

在这里插入图片描述

entity:

public class User {
    private Long id;
    private String name;
    private Integer age;
    public User() {
    }
    public User(Long id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

UserService:

public interface UserService {
    User query(Long id);
}

OrderService:

public interface OrderService {
    String getName(Long id);
}

3、provider(添加dubbo依赖并把刚才写的公共模块依赖进来)

<dependency>
    <groupId>org.example</groupId>
    <artifactId>common</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

在这里插入图片描述

OrderServiceImpl:

import com.alibaba.dubbo.config.annotation.Service;
//这里的service注解用的是dubbo
@Service
public class OrderServiceImpl implements OrderService {
    @Autowired
    private UserService userService;
    @Override
    public String getName(Long id) {
        User query = userService.query(id);
        return query.getName();
    }
}

UserServiceImpl:

import com.alibaba.dubbo.config.annotation.Service;
@Service
public class UserServiceImpl implements UserService {
    @Override
    public User query(Long id) {
        User user = new User(1L, "张三", 12);        
        return user;
    }
}

启动类上添加@EnableDubbo

application.properties:

#服务名称
dubbo.application.name=provice
#注册中心
dubbo.registry.address=127.0.0.1:2181
dubbo.registry.protocol=zookeeper
#通信协议
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

4、comsumer(添加dubbo依赖,common模块,web依赖)

在这里插入图片描述

OrderController:

import com.alibaba.dubbo.config.annotation.Reference;
@RestController
public class OrderController {
//添加dubbo的reference注解,进行远程调用
    @Reference
    OrderService orderService;

    @RequestMapping("getName")
    String getName(Long id){
        String name = orderService.getName(id);
        return name;
    }
}

启动类上加上@EnableDubbo

application.properties:

#服务名称
dubbo.application.name=comsumer
#注册中心
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

测试

启动zookeeper,provider和comsumer.

在这里插入图片描述

注:

1、首先要启动zookeeper,下载windows版压缩包,修改conf配置文件,启动zkServer.cmd命令。具体怎么弄这里就不写了,网上很多,我这里主要练习的是dubbo.
2、启动类上需要添加@EnableDubbo
3、comsumer中调用服务用@Reference,因为是远程调用,所以 @Autowired肯定是没用的了
4、provider中的实现类需要用dubbo的@Service注解

到此这篇关于springboot+dubbo快速启动的文章就介绍到这了,更多相关springboot dubbo启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring依赖注入底层原理详解

    Spring依赖注入底层原理详解

    这篇文章主要介绍了Spring依赖注入底层原理详解,  依赖注入是一种设计模式,它将对象之间的依赖关系从代码中移除,并由容器来管理这些依赖关系,依赖注入的主要目的是降低代码的耦合度,使代码更加灵活和可维护,需要的朋友可以参考下
    2023-09-09
  • Spring中IOC和AOP的核心组成架构详解

    Spring中IOC和AOP的核心组成架构详解

    这篇文章主要介绍了Spring中IOC和AOP的核心组成架构详解,本文是对Spring的2大核心功能——IoC和AOP 的总结提炼,并增加了环境profile和条件化bean的内容,篇幅较短,更像是一个大纲,或者思维导图,需要的朋友可以参考下
    2023-08-08
  • spring中@RestController和@Controller的区别小结

    spring中@RestController和@Controller的区别小结

    @RestController和@Controller这两个注解用于创建Web应用程序的控制器类,那么这两个注解有哪些区别,本文就来介绍一下,并用示例代码说明,感兴趣的可以了解一下
    2023-09-09
  • Java设计模式之备忘录模式详解

    Java设计模式之备忘录模式详解

    这篇文章主要介绍了Java设计模式之备忘录模式详解,备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态,需要的朋友可以参考下
    2023-12-12
  • 详解Java数组的一维和二维讲解和内存显示图

    详解Java数组的一维和二维讲解和内存显示图

    这篇文章主要介绍了Java数组的一维和二维讲解和内存显示图,数组就相当于一个容器,存放相同类型数据的容器。而数组的本质上就是让我们能 "批量" 创建相同类型的变量,需要的朋友可以参考下
    2023-05-05
  • 读取Java文件到byte数组的三种方法(总结)

    读取Java文件到byte数组的三种方法(总结)

    下面小编就为大家带来一篇读取Java文件到byte数组的三种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • c#和java base64不一致的解决方法

    c#和java base64不一致的解决方法

    最近非常郁闷的处理这个base64的问题,同样的一个图片文件,在java和c#进行base64编码后结果不一样,苦恼了很久,下面这篇文章主要给大家介绍了关于c#和java base64不一致的解决方法,需要的朋友可以参考下
    2018-11-11
  • Spring-Security对HTTP相应头的安全支持方式

    Spring-Security对HTTP相应头的安全支持方式

    这篇文章主要介绍了Spring-Security对HTTP相应头的安全支持方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java中 this和super的用法与区别小结

    Java中 this和super的用法与区别小结

    在Java的学习与开发者我们经常遇到this和super关键字,本文主要介绍了Java中 this和super的用法与区别小结,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Sentinel结合Nacos实现数据持久化过程详解

    Sentinel结合Nacos实现数据持久化过程详解

    这篇文章主要介绍了Sentinel结合Nacos实现数据持久化过程,要持久化的原因是因为每次启动Sentinel都会使之前配置的规则就清空了,这样每次都要再去设定规则显得非常的麻烦,感兴趣想要详细了解可以参考下文
    2023-05-05

最新评论