spring boot配置dubbo(properties)

2023-11-07

spring boot与dubbo配置(properties)

  dubbo和zookeeper配合使用,具体的它们之间的配置这里不说了。

一、spring boot与dubbo配置有两种方式:

1)spring boot在自己的配置文件application.properties 配置dubbo。(本篇主要说这个)
2)spring boot结合传统spring dubbo配置文件xml形式。(请看下一篇文章)

二、本篇主要说在自己配置文件里配置dubbo的步骤:

1)dubbo接口发布者配置

1.首先需要引入如下依赖:

 <!--  Spring Boot Dubbo 依赖-->
<dependency>
  <groupId>io.dubbo.springboot</groupId>
  <artifactId>spring-boot-starter-dubbo</artifactId>
  <version>1.0.0</version>
</dependency> 

2.在application.properties 文件里配置如下内容:

#dubbo提供者的别名,只是个标识
spring.dubbo.application.name=provider
#zk地址
spring.dubbo.registry.address=zookeeper://192.168.1.160:2181
#dubbo协议
spring.dubbo.protocol.name=dubbo
#duboo端口号
spring.dubbo.protocol.port=20880
#这是你要发布到dubbo的接口所在包位置
spring.dubbo.scan=test.spring.dubboService

3.创建一个要发布的dubbo接口和其实现类,具体如下:

package test.spring.dubboService;
public interface TestDubboService {
    public String getName(String name);         
}
package test.spring.dubboService.impl;

import com.alibaba.dubbo.config.annotation.Service;
import test.spring.dubboService.TestDubboService;
@Service
public class TestDubboServiceImpl implements TestDubboService {
    @Override
    public String getName(String name) {
        // TODO Auto-generated method stub
        return "姓名:"+name;
    }
}

  接口上什么都不加,但是其实现类上要加上一个注解@Service 注意该注解是com.alibaba.dubbo.config.annotation.Service 如果引入错误,发布也不会成功的。

4.如果发布的接口需要加入版本号,就可以写为这样@Service(version="1.0.0.1")

具体的包位置接口请看下图:

这里写图片描述

  我在前几篇里说过,spring boot默认扫描是从启动类开始依次向下级包扫描,如果被调用方在调用的时候还没有初始化,就肯定会找不到的,上图的接口为什么会放在实现类的上层,应该就能理解了吧。

  到此配置dubbo的发布方就完成了,直接运行启动类,查看dubbo接口的发布情况。如下:

这里写图片描述

2)dubbo接口消费者配置

1、首先依然要引入spring boot的依赖:

 <!--  Spring Boot Dubbo 依赖-->
<dependency>
  <groupId>io.dubbo.springboot</groupId>
  <artifactId>spring-boot-starter-dubbo</artifactId>
  <version>1.0.0</version>
</dependency> 

2.在application.properties 文件里填些dubbo的配置:

spring.dubbo.application.name=consumer-1
#zk地址
spring.dubbo.registry.address=zookeeper://192.168.1.160:2181
#dubbo协议
spring.dubbo.protocol.name=dubbo
#duboo端口号
spring.dubbo.protocol.port=20880
#这是要扫描使用的dubbo接口所在包位置
spring.dubbo.scan=test.spring.dubboService

3.由于消费者和发布者不在同一项目里,上边的test.spring.dubboService 包里,已发布接口TestDubboService 也需要复制一份到消费者这边,并且包结构都必须与发布的一样。

  注意上边,这里我说的复制,具体在项目开发里不会这么干的,比如我们是这样来做的。
  我们是项目里建了三个项目(springboot-facade、springboot-rest、springboot-service),springboot-facade里放了接口的结构,即service和bean,springboot-rest项目和springboot-service项目分别引用springboot-facade项目,将来就算别人来调用我们的接口,只要引入一下springboot-facade包,配置一下dubbo,就可以了。
  当然就算webservice那种远程调用,也是需要通过wsdl去生成service结构在消费者这边。
  关于单项目需要拷贝的话,具体请看下图,主要是提示一下,复制的接口在项目所处的路径必须要与发布的路径相同
这里写图片描述

4.最后在调用的地方,我是在TestController 引入的接口,在引入的地方需要加一个注解,该注解为alibaba的 @Reference ,同理如果想加入版本号,则加上version即可,值要与发布接口的版本号对应。例如:@Reference(version="1.0.0.1"),具体如下:

package test.spring.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import test.spring.dubboService.TestDubboService;
@RestController
@RequestMapping("/springboot")
public class TestController {
    @Reference
    TestDubboService testDubboService;
    @RequestMapping(value="abc/akf",method=RequestMethod.GET)
    public String abc(String name){  
        return testDubboService.getName(name);
    }
}

5.依次启动dubbo发布方项目和调用方项目。访问以上controller,如果这么运行下来,不出意外的话,就会报空指针异常,发布的这个接口在调用方调不到,修改如下即可。

修改后的项目结构,如下:

这里写图片描述

  也就是说,需要把controller的位置放到dubboService下一级,这里就算你在引入的地方加上@Lazy 延迟加载注解也调用不到,我反正都是调整包结构解决的空指针异常。

6.再次启动项目,访问controller,就会访问成功的:

这里写图片描述

下一篇 写spring boot与传统的dubbo xml配置方式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring boot配置dubbo(properties) 的相关文章

随机推荐

  • pycharm配置python路径_pycharm如何配置python环境

    pycharm配置python环境的方法是 1 依次点击 File Project Interpreter 2 点击 Show All 选择 Existing Environment 3 选择python的安装路径 点击OK即可 配置方法
  • 安装secureCRT提示sorry的解决办法

    摘自 你的secureCRT还在sorry吗 作者 丶PURSUING 发布时间 2021 03 12 08 21 37 网址 https blog csdn net weixin 44742824 article details 1146
  • WinCE5.0中文模拟器SDK(VS2005)的配置

    WinCE5 0中文模拟器SDK的安装过程不细说了 一路默认即可 下面主要介绍如何配置 使其能在VS2005中正常使用 安装完成后 打开VS2005 点击菜单 工具 选项 设备工具 设备 选择 Windows CE 5 0 ARMV4I E
  • Keil报错:Libraries\CMSIS\stm32f10x.h(298): error: #67: expected a "}"

    原因主要有三点 启动文件 头文件定义 驱动选择不一致 各项如下 1 启动文件 2 头文件定义 3 驱动选择 会导致报错的情况案例 1 启动文件为startup stm32f10x md s C C 的Define为 STM32F10X HD
  • moose安装过程中遇到问题及解决方案

    问题 curl 56 OpenSSL SSL read error 0A000126 SSL routines unexpected eof while reading errno 104 解决方案 未使用vpn 下载速度慢 可多次执行命令
  • [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)

    使用暴风魔镜SDK来操作 将魔镜的摄像头拖放到项目中 将MoJingVrHead的Script剪切到CamRoot中 这个时候能看到显示2个物体了 不过使用的Canvas还是显示一个 调整Canvas的属性 使其显示2份 步骤一 将Rend
  • Linux下杀死指定命令进程

    ps grep cat awk F print 1 xargs kill 9 执行如下 在网上搜到其他不一样的方式 也在此贴一下 https www jianshu com p 80b141746fae
  • 深入理解JS闭包

    关于JS中闭包的理解 相信很多人都和笔者一样刚开始很是困惑 笔者也是在看了很多前辈的文章后 总结出一点自己的理解 记录与此 囿于笔者水平有限 若有错误之处 恳请不啬赐教 你可以在一个函数里面嵌套另外一个函数 嵌套 内部 函数对其容器 外部
  • Windows电脑怎么设置局域网内共享磁盘?

    前言 我有一台主机硬盘容量比较大 想做为一个共享硬盘 方便我其他笔记本能够往这台硬盘传输文件 想到的最好最快的方法就是通过局域网内部进行文件传输 通过局域网共享磁盘 这种方法也是非常便捷的 那如何设置操作呢 请详细看下文 局域网共享磁盘 共
  • 用QEMU虚拟国产飞腾+麒麟环境

    1 简述 由于调试 测试需要飞腾主机及麒麟的环境 但是飞腾主机资源有限 于是便尝试了下在Qemu下虚拟出来一个ARM主机用来作为测试环境 本文介绍如何在Qemu虚拟的ARM环境下安装麒麟操作系统 2 安装过程 2 1 准备 本次安装需要准备
  • 什么是分布式系统?

    分布式系统是由多个独立的计算机或计算节点组成的系统 这些节点通过消息传递或共享数据的方式进行协调和通信 以实现共同的目标 分布式系统的设计目标是提高系统的可靠性 可扩展性 性能和容错性 在一个分布式系统中 各个计算机节点之间相互合作 共同完
  • .NET Framework简介

    1 什么是 NET Framework NET Framework 是支持生成 运行下一代应用程序和XML Web Services的内部Windows组件 它简化了在高度分布式Internet环境中的应用程序开发 NET Framewor
  • python之数值类型数据及运算

    数据类型 数据类型分为 字符串 str 整型 int 浮点型 float 负数 complex 布尔型 bool 一 字符串 1双引号 单引号括起来的 2双引号开头 结尾 xxx 3单引号开通 结尾 xxx 4不能一边单一边双 5多行字符串
  • iOS 为app生成下载链接,并生成二维码

    1 打开这个网址 http aso100 com 在此处输入app名称 点搜索 2 看 第一个就是我们的app 下一步点击图标 3 点击app id 4 看连接出来了 5 最后到这个网站生成二维码 http 2bai com cn hao2
  • Vue2中使用高德地图(Loader )

    1 需求 根据输入的地址 地图显示地址的位置 2 准备工作 2 1 注册高德开放平台账户 并完成认证 根据具体实际情况 完成个人开发或者企业开发认证 高德开放平台https console amap com 2 2在应用管理 我的应用中添加
  • 斗地主老输?只能领低保?看我用Python写一个AI出牌器!现在一亿欢乐豆了!

    前言 最近在网上看到一个有意思的开源项目 快手团队开发的开源AI斗地主 DouZero 今天我们就一起来学习制作一个基于DouZero的欢乐斗地主出牌器 看看AI是如何来帮助我们斗地主 赢欢乐豆 实现财富自由的吧 首先一起来看看AI斗地主出
  • View那些事儿(1) -- View绘制的整体流程

    写在开头 Android的知识体系十分庞大 在Android的学习道路上难免会遇到学习了新东西就忘了旧东西的情况 本系列文章主要是对自己对View的学习过程进行一个深入的理解与总结 当然还结合自己在实际项目中的一些体会写了一些东西 当用户打
  • LINUX 下 用C语言编写 TCP/IP通信的 sqlite3数据库服务器

    一 功能需求 我们首先明确一下 我们要制作的这个小服务器 需要具备什么功能 1 1 用户的注册和登录 使用sqlite3数据库 插入新的用户和查询用户的名字和密码是否匹配 1 2 查询单词 单词及其解释中 保存在一个文本文件当中 需要打开文
  • Android 12(S) 图形显示系统 - 示例应用(二)

    1 前言 为了更深刻的理解Android图形系统抽象的概念和BufferQueue的工作机制 这篇文章我们将从Native Level入手 基于Android图形系统API写作一个简单的图形处理小程序 透过这个小程序我们将学习如何使用Nat
  • spring boot配置dubbo(properties)

    spring boot与dubbo配置 properties dubbo和zookeeper配合使用 具体的它们之间的配置这里不说了 一 spring boot与dubbo配置有两种方式 1 spring boot在自己的配置文件appli