整合springboot+dubbo2.6.0 demo

本文简要说明了springboot和dubbo整合的配置文件的写法

目录结构

整体目录

如下图所示:整体项目是一个父子工程,common作为一个公共的module,可存放共享依赖,起到中介的作用。

common目录

DemoService

//服务接口,由provider实现,供consumer使用
public interface DemoService {
String sing();
}

pom:这里使用的是dubbo2.6.0

<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>

在common中引入dubbo依赖,再让provider,consumer引入common就不用重复引入dubbo依赖。

provider目录

provider的功能是实现common的服务接口,但是接口在common中,所以我们需要引入common的依赖,实现接口以后再将服务暴露出去。

1:引入common依赖

<dependency>
<groupId>com.dubbo</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

2:实现接口

@Service()注解用于声明接口,(你要实现的是哪个接口)

这里的@Service注解的全类名是com.alibaba.dubbo.config.annotation

@Service(interfaceClass = DemoService.class)   //是common中的接口
@Component
public class ServiceImpl implements DemoService {
@Override
public String sing() {
return "i am singing";
}
}

3:springboot配置文件,application.properties

spring.application.name=provider   //provider只是一个代号
spring.dubbo.registry=N/A
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880

4:启动类,SbProviderApplication

@SpringBootApplication
@EnableDubboConfiguration //开启dubbo服务
public class SbProviderApplication { public static void main(String[] args) {
SpringApplication.run(SbProviderApplication.class, args); //将read方法阻塞在这里,可以达到让服务一直开启的效果
//如果不阻塞,则服务开启后便立马停止
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}

consumer目录

consumer就是服务的使用者,调用provider暴露的服务

1:引入common依赖

<dependency>
<groupId>com.dubbo</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

2:ServiceImpl

@Component
public class ServiceImpl {
//这里需要声明接口的类,以及服务暴露的ip和端口号
//端口号在provider的配置文件中设置
//ip就是provider的ip,或者可以启动provider,在控制台的启动日志中会显示服务的暴露位置
@Reference(interfaceClass = DemoService.class,url = "dubbo://192.168.18.1:20880")
DemoService demoService; public String dance(){
return demoService.sing();
}
}

3:springboot配置文件,application.properties

spring.application.name=consumer

4:springboot启动类,SbConsumerApplication

@SpringBootApplication
@EnableDubboConfiguration
public class SbConsumerApplication { public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(SbConsumerApplication.class, args); ServiceImpl bean = applicationContext.getBean(ServiceImpl.class); String s = bean.dance(); System.out.println(s);
}
}

启动

启动provider

若启动过程中出现以下错误信息,大概率是因为20880端口被占用,需要停止之前启动的dubbo服务

Caused by: java.net.BindException: Address already in use: bind

启动日志:



说明provider提供的dubbo服务暴露在该ip位置,启动成功

启动consumer

说明consumer成功调用provider实现的方法。

Dubbo入门1:Spirngboot+Dubbo2.6.0整合的更多相关文章

  1. springboot学习入门简易版六---springboot2.0整合全局捕获异常及log4j日志(12-13)

    使用Aop实现 1创建异常请求 在原有项目基础上,jspController中创建一个可能发生异常的请求: /** * 全局捕获异常测试 * @param i * @return */ @Reques ...

  2. springboot学习入门简易版五---springboot2.0整合jsp(11)

    springboot对jsp支持不友好,内部tomcat对jsp不支持,需要使用外部tomcat,且必须打包为war包. 1 创建maven项目 注意:必须为war类型,否则找不到页面. 且不要把js ...

  3. springboot学习入门简易版九---springboot2.0整合多数据源mybatis mysql8+(22)

    一个项目中配置多个数据源(链接不同库jdbc),无限大,具体多少根据内存大小 项目中多数据源如何划分:分包名(业务)或注解方式.分包名方式类似多个不同的jar,同业务需求放一个包中. 分包方式配置多数 ...

  4. SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用

    一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...

  5. Dubbo入门—搭建一个最简单的Demo框架

    一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...

  6. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  7. Dubbo入门---搭建一个最简单的Demo框架(转)

    Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本.  ...

  8. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...

  9. dubbo入门学习(二)-----dubbo hello world

    一.dubbo hello world入门示例 1.提出需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在需要创建两个服务模块进行测试: 模块 功能 订单服务web模块 创 ...

  10. 【万字长文】Dubbo 入门总结 ,一款高性能的 Java RPC 框架

    这篇文章是我学习整理 Dubbo 的一篇文章,首先大部分内容参考了官网 + 某硅谷的视频,内容讲解进行了重新编排,40多张图片,也都是我修改重制的,虽然一万多字,但是其实也可以看出来,更多的内容集中在 ...

随机推荐

  1. 如何利用烛龙和谷歌插件优化CLS(累积布局偏移)

    简介 CLS 衡量的是页面的整个生命周期内发生的每次意外布局偏移的最大突发性_布局偏移分数_.布局变化的发生是因为浏览器倾向于异步加载页面元素.更重要的是,您的页面上可能存在一些初始尺寸未知的媒体元素 ...

  2. 华企盾DSC无法从网页下载客户端(无法访问web端)

    解决方法1:服务器安装目录需要安装在英文目录,否则DSCApache.exe会启动不了,导致无法访问5580网页. 解决方法2:5580端口占用也会导致DSCApache.exe启动不了,可打开服务器 ...

  3. StringBuilder、StringBuffer

    StringBuilder 1.concat() 拼接字符串 2.indexOf() 查找 3.replace() 替换 4.subString(1,2) 截取 0,1,2 1开始 2结束 Strin ...

  4. 从零玩转QQ登录-clwzqqdlu

    title: 从零玩转QQ登录 date: 2021-05-01 15:55:39.951 updated: 2023-03-30 13:29:03.865 url: https://www.yby6 ...

  5. 【scikit-learn基础】--『监督学习』之 K-近邻分类

    KNN(K-近邻),全称K-Nearest Neighbors,是一种常用的分类算法.KNN算法的历史可以追溯到1957年,当时Cover和Hart提出了"最近邻分类"的概念.但是 ...

  6. IPv6规模部署和应用成必然趋势,IPv6监测具有很大市场潜力

    日前,中央网信办.国家发展改革委.工业和信息化部联合印发<深入推进IPv6规模部署和应用2021年工作安排>.这更深入的表明,IPv6规模部署和应用是互联网演进升级的必然趋势,是网络技术创 ...

  7. 文心一言 VS 讯飞星火 VS chatgpt (54)-- 算法导论6.2 6题

    文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题 六.证明:对一个大小为 n的堆,MAX-HEAPIFY 的最坏情况运行时间为 Ω(Ign).(提示对于n个结点的堆, ...

  8. Xshell与Xftp安装与使用

    Xshell与Xftp安装 软件安装:官网或者应用商店 安装结束 nslicense.dll替换 下载文件 使用 登录 双击刚刚建立的连接 表示建立成功 点击文件传输 右边就是服务器的文件,左边就是本 ...

  9. 实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联

    摘要:用实践案例带你掌握云连接CC如何实现跨区域多VPC与线下IDC Server互联. [背景] 当前在华为云华南.华东.香港region均部署了业务,同时在华南region通过云专线与线下IDC打 ...

  10. 手把手带你通过API创建一个loT边缘应用

    摘要:使用API Arts&API Explorer调用IoT边缘服务接口创建应用,了解边缘计算在物联网行业的应用. 本文分享自华为云社区<使用API Arts&API Expl ...