说明:

由于此文章是博主2017年学习时写的文章,项目dubbo版本过低,新项目不应该继续采用此版本。阿里巴巴已经将dubbo重新维护并捐给Apache开源组织,新起了比较新版本的项目整合。学习整合的过程可以继续查阅本片文章,查看和参考源码可参考下面的链接.

https://blog.csdn.net/ThirdFloor/article/details/89712207

SpringBoot+Dubbo整合

此项目是在SpringBoot中整合使用Dubbo,以达到分布式服务项目。Dubbo是Alibaba开源的分布式服务框架,具体不再介绍。本文是对此项目的简单说明解析。

项目结构

分为三个项目,将service接口、service实现、web层分开。

  • springboot-dubbo-api

此项目为service接口层,主要放service接口、实体类、dto、枚举类、异常类等通用类。此项目将打包成jar包在下面两个项目中引用,当然这些是交给maven来处理。

  • springboot-dubbo-service

此项目为具体的业务实现,包括具体的业务代码、Mybatis的mapper接口和sql语句。此项目为服务提供者,service会注册为dubbo服务,使用zookeeper进行管理。

  • springboot-dubbo-web

此项目和前端打交道,为前端输出数据(单纯考虑rest模式下)。服务的消费者,需要注册为服务消费者,从zookeeper中获取已注册的服务。

具体实现

  • springboot-dubbo-api

主要是service接口和实体对象,其中实体对象一定要实现Serializable接口,不然在注册dubbo服务时会报错。

其次在pom.xml文件中,需要将此项目打包为jar文件,具体配置如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><name>springboot-dubbo-api</name><groupId>llf</groupId><artifactId>springboot-dubbo-api</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging>
</project>

在开发过程中,此项目代码有修改需要更新在maven仓库中,具体操作就是maven install

  • springboot-dubbo-service

首先maven依赖,需要注意的时,要将springboot-dubbo-api项目依赖加进来。不然无法实现service接口和使用实体类。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><!-- Spring Boot Dubbo 依赖 -->
<dependency><groupId>io.dubbo.springboot</groupId><artifactId>spring-boot-starter-dubbo</artifactId><version>1.0.0</version>
</dependency><!--Mybatis-SpringBoot集成-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.0.0</version>
</dependency><!-- mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version>
</dependency><!--服务接口-->
<dependency><groupId>llf</groupId><artifactId>springboot-dubbo-api</artifactId><version>1.0-SNAPSHOT</version>
</dependency>

dubbo配置,由于加入的依赖是spring-boot-starter-dubbo,已经和springboot集成了,所以只需要在application.properties(或者appl.yml)文件中加入配置,如下:

## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.llf.springboot.dubbo

在上面配置中,zookeeper为本地启动的,需要事先安装启动,具体流程不再讲解。scan的包为接口实现的所在的包目录。

注意:在service实现类中加入是@Service注解要是dubbo的Service注解

com.alibaba.dubbo.config.annotation.Service;

补充

如果不想使用spring-boot-starter-dubbo依赖,想使用官方的原生依赖,可使用xml配置dubbo。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd  http://code.alibabatech.com/schema/dubbo  http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="llf-provider" /><!-- 使用zookeeper注册中心暴露服务地址 --><dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" /><!-- 用dubbo协议在20900端口暴露服务, payload:请求及响应数据包的大小,默认为88388608,现设置为默认值的两倍,为支持大数据量的excel导出 --><dubbo:protocol name="dubbo" port="20918" payload="176477216" /><!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 --><dubbo:provider timeout="30000" threadpool="fixed" threads="500" accepts="1000" /><!-- 资源服务 --><dubbo:service retries="0" interface="com.llf.zookeeper.dubbo.service.UserService" ref="userService" /></beans>

然后在启动类Application.java中加入配置

@ImportResource("classpath:provider.xml")
  • springboot-dubbo-web

此项目maven依赖和service项目一致

dubbo服务配置,项目要对service服务进行消费,需要进行消费者配置。

# Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=com.llf.springboot.dubbo

注意:在controller进行service注入时需要使用@Reference

com.alibaba.dubbo.config.annotation.Reference

使用

  1. 首先确定springboot-dubbo-api项目install到maven仓库

  2. 启动本地zookeeper

  3. 先启动springboot-dubbo-service项目,再启动springboot-dubbo-web

  4. 访问web资源地址,获取数据

项目源代码

https://github.com/phycholee/springboot-dubbo-demo

SpringBoot+Dubbo整合相关推荐

  1. springBoot+dubbo整合Redis - 脚手架系列(三)

    1.介绍 Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库. Redis 可以存储键和五种不同 ...

  2. SpringBoot+Dubbo整合(一)

    前期条件: 启动Zookeeper.Dubbo-Monitor-Simple.Dubbo-Admin:https://blog.csdn.net/qq_37598011/article/details ...

  3. Spring-Boot Dubbo 整合

    为什么要用dubbo 服务治理框架 服务的监控 服务的注册发现 服务的通信 服务的容错 服务的负载均衡 dubbo支持的注册中心 consul zookeeper eureka redis etcd ...

  4. dubbo整合springboot图解版(九)

    点击Next,直接点完成! 创建完成! 将之前dubbo-provider的实现复制到新的boot-dubbo-provider相应目录下: 在pom.xml中添加依赖的dubbo-interface ...

  5. SpringBoot+ Dubbo + Mybatis + Nacos +Seata整合来实现Dubbo分布式事务

    作者:请叫我东子 https://blog.csdn.net/u010046908/article/details/100536439 1.简介"本文主要介绍SpringBoot2.1.5 ...

  6. SpringBoot+Dubbo+环信(即时通信)整合

    SpringBoot+Dubbo+环信(即时通信)整合 1.注册环信账号 官网:https://www.easemob.com/ 稳定健壮,消息必达,亿级并发的即时通讯云 2. 了解平台架构 文档地址 ...

  7. dubbo yml配置_利用springboot+dubbo,构建分布式微服务,全程注解开发(一)

    随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 一.先来一张图 说起 Dubbo,相信大家都不 ...

  8. Dubbo 整合 Pinpoint 做分布式服务请求跟踪

    在使用Dubbo进行服务化或者整合应用后,假设某个服务后台日志显示有异常,这个服务又被多个应用调用的情况下,我们通常很难判断是哪个应用调用的,问题的起因是什么,因此我们需要一套分布式跟踪系统来快速定位 ...

  9. Dubbo基础专题——第四章(Dubbo整合Nacos分析细节点)

    应广大的读者要求,也是公司目前需要一些支持,我就自己亲身搭建一个Springboot+nacos+dubbo的框架和项目,并演示dubbo面对一些系统的 业务场合,应该怎么去做支持,文章中我会先贴出代 ...

最新文章

  1. 解决Word出错--一打开就反复重启的问题
  2. 初学FF(火狐)的扩展(Extensions)
  3. Asp.Net MVC 关于npoi导出excel的方法
  4. U3D屏幕坐标,世界坐标,像素坐标之间的关系
  5. vs五子棋c语言代码,五子棋代码C语言版.doc
  6. 东软软件动态生成对数据表更新操作的方法
  7. (SAE)skylark app engine preview (1) —— guestbook
  8. 基于Opencv3.0对图像进行透视变换
  9. 【leetcode】数组的度-两个map关联初探
  10. 神经网络基本原理简明教程之线性回归预测房价
  11. html 模糊匹配,CSS 属性选择器 模糊匹配的使用
  12. Qt-十字消除小游戏
  13. JS思维导图类库:jsMind
  14. wps在线预览接口_Office在线预览及PDF在线预览的实现方式大集合
  15. php pack ode,Python中的数值ODE求解
  16. java 和c 多态比较_多态在 Java 和 C 编程语言中的实现比较
  17. 李笑来python自学_自学是门手艺--李笑来
  18. input中禁止输入特殊字符
  19. 【Arduino】LCD 1602 转接板 的默认接线
  20. 车载诊断数据库ODX——Flash(刷写)

热门文章

  1. 心存希望,幸福就会靠近你;心存梦想,机遇就会笼罩你;心存坚持,快乐就会常伴你;心存善念,阳光就会照耀你;心存美丽,温暖就会围绕你;心存他人,真情就会回报你;心存感恩,贵人就会青睐你。
  2. 颜色的识别方法和探索 基于matlab
  3. Axure RP Extension for Chrome 安装插件
  4. matlab随机样本的选择,matlab随机抽样 | 学步园
  5. 浙江工商大学20机试(oj复试)月利率
  6. 日语文章,每天一篇 第1章 青春 第1篇 まだまだ先(さき)があります
  7. 吐血推荐珍藏的 Chrome 插件二
  8. python------帮助小学生练习10以内的加法
  9. shell命令之ln
  10. mysql数据库约束详解_深入理解mysql数据库的约束