Dubbo入门1:Spirngboot+Dubbo2.6.0整合
整合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整合的更多相关文章
- springboot学习入门简易版六---springboot2.0整合全局捕获异常及log4j日志(12-13)
使用Aop实现 1创建异常请求 在原有项目基础上,jspController中创建一个可能发生异常的请求: /** * 全局捕获异常测试 * @param i * @return */ @Reques ...
- springboot学习入门简易版五---springboot2.0整合jsp(11)
springboot对jsp支持不友好,内部tomcat对jsp不支持,需要使用外部tomcat,且必须打包为war包. 1 创建maven项目 注意:必须为war类型,否则找不到页面. 且不要把js ...
- springboot学习入门简易版九---springboot2.0整合多数据源mybatis mysql8+(22)
一个项目中配置多个数据源(链接不同库jdbc),无限大,具体多少根据内存大小 项目中多数据源如何划分:分包名(业务)或注解方式.分包名方式类似多个不同的jar,同业务需求放一个包中. 分包方式配置多数 ...
- SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...
- Dubbo入门—搭建一个最简单的Demo框架
一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- Dubbo入门---搭建一个最简单的Demo框架(转)
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...
- dubbo入门学习(二)-----dubbo hello world
一.dubbo hello world入门示例 1.提出需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在需要创建两个服务模块进行测试: 模块 功能 订单服务web模块 创 ...
- 【万字长文】Dubbo 入门总结 ,一款高性能的 Java RPC 框架
这篇文章是我学习整理 Dubbo 的一篇文章,首先大部分内容参考了官网 + 某硅谷的视频,内容讲解进行了重新编排,40多张图片,也都是我修改重制的,虽然一万多字,但是其实也可以看出来,更多的内容集中在 ...
随机推荐
- SpringBoot整合Filter过滤器
话不多说,直接上核心代码 1.先创建一个Filter类 package com.qbb.reggie.filter; import com.alibaba.fastjson.JSON; import ...
- 【.NET】控制台应用程序的各种交互玩法
老周是一个不喜欢做界面的码农,所以很多时候能用控制台交互就用控制台交互,既方便又占资源少.有大伙伴可能会说,控制台全靠打字,不好交互.那不一定的,像一些选项类的交互,可以用键盘按键(如方向键),可比用 ...
- Halo新年灯笼-halonewyaer
title: Halo新年灯笼 date: 2021-12-29 15:49:34.665 updated: 2022-03-10 16:00:53.189 url: https://www.yby6 ...
- springboot--ActiveMQ--消息队列
ActiveMQ远程消息队列 一.我们创建springboot项目工程 二.创建完毕我们简单介绍 activeMQ 1.概述 消息中间件可以理解成就是一个服务软件,保存信息的容器,比如生活中的快递云柜 ...
- 5s!用浏览器打造一个开箱即用的Linux系统
做为Linux系统管理员.或者是系统运维工程师,肯定会在工作遇到这样的需求:需要开发环境.测试环境.准生产环境等等环境,有时候建一个环境费时间不说,还容易出各种错误,好不容易建好了,可能还用不了几天. ...
- Salesforce LWC学习(四十六) record-picker组件浅谈
本篇参考: https://developer.salesforce.com/docs/platform/lwc/guide/reference-graphql.html https://develo ...
- 【pandas小技巧】--目录(完结)
pandas小技巧系列是介绍的是使用pandas分析数据时,最常用的一些操作技巧. 具体包括: 创建测试数据 学习pandas的过程中,为了尝试pandas提供的各类功能强大的函数,常常需要花费很多时 ...
- 文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题
文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题 二.试分析在使用下列循环不变量时,HEAPSORT 的正确性:在算法的第 2~5行 for 循环每次迭代开始时,子数 ...
- position的属性值
(fixed的父元素永远是浏览器窗口,不会根据页面滚动而改变位置:absolute的父元素是可以设置的,他会永远跟随父元素的位置的改变而改变.) 1.position: relative;相对定位 不 ...
- 一文掌握Ascend C孪生调试
本文分享自华为云社区<一文掌握Ascend C孪生调试>,作者:昇腾CANN. 1 What,什么是孪生调试 Ascend C提供孪生调试方法,即CPU域模拟NPU域的行为,相同的算子代码 ...