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多张图片,也都是我修改重制的,虽然一万多字,但是其实也可以看出来,更多的内容集中在 ...
随机推荐
- 【论文阅读】HTTP 流量和恶意 URL 的异常检测
Part 1关于论文 基本信息 题目:HTTP 流量和恶意 URL 的异常检测 源码:sec2vec源代码 摘要 在本文中,我们将展示如何利用自然语言处理(NLP)中已知 的方法来检测 HTTP 请求 ...
- MybatisPlus条件查询方法全解
1.是什么? MybatisPlus通过条件构造器可以组装复杂的查询条件,写一些复杂的SQL语句,从而简化我们的开发提升我们的开发效率 # 可以简单的理解为就是我们写SQL语句时where后面的条件 ...
- C#设计模式之享元模式(Flyweight)
using System; using System.Collections; public class Client { public static void Main(string[] args) ...
- 一文带你深入理解K8s-Pod的意义和原理
本文分享自华为云社区<深入理解K8s-Pod的意义和原理>,作者:breakDawn. 在Kubernetes概念中,有以下五种概念: 容器container:镜像管理的最小单位 生产任务 ...
- Pikachu漏洞靶场 Sql Inject(SQL注入)
SQLi 哦,SQL注入漏洞,可怕的漏洞. 文章目录 SQLi 数字型注入(post) 字符型注入(get) 搜索型注入 xx型注入 "insert/update"注入 inser ...
- 2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!
2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明! 文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不 ...
- 谈谈muduo库的销毁连接对象——C++程序内存管理和线程安全的极致体现
前言 网络编程的连接断开一向比连接建立复杂的多,这一点在陈硕写的muduo库中体现的淋漓尽致,同时也充分体现了C++程序在对象生命周期管理上的复杂性,稍有不慎,满盘皆输. 为了纪念自己啃下muduo库 ...
- Java 打印Excel工作表
示例要点 本文介绍如何通过Java程序打印Excel工作表.可通过以下方法打印: 默认打印机打印 指定打印机打印 程序环境 spire.xls.jar JDK版本要求1.6.0及以上的高版本 IDEA ...
- 详解GaussDB(DWS)的query_band负载识别与应用
摘要:query_band是一个会话级别(session)的GUC参数,本身是字符串类型,支持任意形式字符组合. 本文分享自华为云社区<GaussDB(DWS)的query_band负载识别与应 ...
- 鸿蒙轻内核M核源码分析:数据结构之任务排序链表
摘要:鸿蒙轻内核的任务排序链表,用于任务延迟到期/超时唤醒等业务场景,是一个非常重要.非常基础的数据结构. 本文会继续给读者介绍鸿蒙轻内核源码中重要的数据结构:任务排序链表TaskSortLinkAt ...