点击Next,直接点完成!

创建完成!

将之前dubbo-provider的实现复制到新的boot-dubbo-provider相应目录下:

在pom.xml中添加依赖的dubbo-interface这个接口包

错误就消失了!

然后我们来配置服务提供者:

首先导入dubbo-starter依赖:

进入https://github.com/apache/incubator-dubbo,找到Dubbo-Spring-Boot,进入

则可以找到dubbo和spring boot整合的依赖包:

粘贴进服务提供者的pom中:

<!-- dubbo和springboot整合的依赖包 --><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency>

导入mybatis和springboot的依赖:

     <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version></dependency>

然后配置dubbo框架配置:

#dubbo服务提供者的应用名称
dubbo.application.name=demotest-provider
#dubbo注册中心的地址
dubbo.registry.address=127.0.0.1:2181
#dubbo注册中心使用协议
dubbo.registry.protocol=zookeeper#dubbo使用协议
dubbo.protocol.name=dubbo
#dubbo协议使用的端口
dubbo.protocol.port=20880#dubbo监控中心协议
dubbo.monitor.protocol=registry

然后配置数据库和mybatis:


#数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/dubbo
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000  mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
mybatis.type-aliases-package=com.alibaba.dubbo.mapper

配置自定义端口:

server.port=8888

配置完dubbo之后,在启动入口处开启基于注解的dubbo功能:

粘贴下代码:

package com.alibaba.dubbo.service.impl;import java.util.List;import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import com.alibaba.dubbo.config.annotation.Service;
import com.alibaba.dubbo.common.CrudServiceImpl;
import com.alibaba.dubbo.domain.Role;
import com.alibaba.dubbo.mapper.RoleMapper;
import com.alibaba.dubbo.service.RoleService;/*** service注解暴露服务,指定服务超时时间* @author jeff* 2018年8月28日*/
@Service(timeout=1000)
public class RoleServiceImpl  extends CrudServiceImpl<Role> implements RoleService<Role>{private final static Logger logger = LogManager.getLogger(RoleServiceImpl.class);@Autowiredprivate RoleMapper<Role> roleMapper;@Overridepublic List<Role> getALlRoles() {logger.debug("getALlRoles in...");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}return roleMapper.getAllRoles();}}
package com.alibaba.dubbo.service.impl;import java.util.List;import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import com.alibaba.dubbo.common.CrudServiceImpl;
import com.alibaba.dubbo.config.annotation.Service;
import com.alibaba.dubbo.domain.User;
import com.alibaba.dubbo.mapper.UserMapper;
import com.alibaba.dubbo.service.UserService;/*** * @author jeff* 2018年8月28日*/
@Service(timeout=1000)
public class UserServiceImpl  extends CrudServiceImpl<User> implements UserService<User>{private final static Logger logger = LogManager.getLogger(UserServiceImpl.class);@Autowiredprivate UserMapper<User> userMapper;/*** 使用dubbo注解的timeout参数测试接口请求超时情况,经测试会重试另外两次,一共三次。* 消费端抛出异常如下:*  com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getALlUsers in the service com.alibaba.dubbo.service.UserService.*   Tried 3 times of the providers [172.16.0.89:20880] (1/1) from the registry localhost:2181 on the consumer 172.16.0.89 using the dubbo version 2.5.3. *   Last error is: Invoke remote method timeout. method: getALlUsers, *   provider: dubbo://172.16.0.89:20880/com.alibaba.dubbo.service.UserService?anyhost=true&application=demotest-consumer&check=false&dubbo=2.5.3&interface=com.alibaba.dubbo.service.UserService&methods=get,remove,getALlUsers,getAll,modify,create&organization=dubbox&owner=programmer&pid=25392&revision=0.0.1&side=consumer&timeout=1000&timestamp=1535459828035, *   cause: Waiting server-side response timeout. start time: 2018-08-28 20:47:05.058, end time: 2018-08-28 20:47:06.060, *   client elapsed: 1 ms, server elapsed: 1001 ms, *   timeout: 1000 ms,*   request: Request [id=17, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=getALlUsers, parameterTypes=[], arguments=[], attachments={path=com.alibaba.dubbo.service.UserService, interface=com.alibaba.dubbo.service.UserService, timeout=1000, version=0.0.0}]], *   channel: /172.16.0.89:58375 -> /172.16.0.89:20880*/@Overridepublic List<User> getALlUsers(){logger.debug("getALlUsers in...");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}return userMapper.getAllUsers();}}
package com.alibaba.dubbo.mapper;import java.io.Serializable;
import java.util.List;import org.apache.ibatis.annotations.Mapper;import com.alibaba.dubbo.common.CrudMapper;
import com.alibaba.dubbo.domain.Role;
@Mapper
public interface RoleMapper <T extends Serializable> extends CrudMapper<T>{List<Role> getAllRoles();
}
package com.alibaba.dubbo.mapper;import java.io.Serializable;
import java.util.List;import org.apache.ibatis.annotations.Mapper;import com.alibaba.dubbo.common.CrudMapper;
import com.alibaba.dubbo.domain.User;
@Mapper
public interface UserMapper <T extends Serializable> extends CrudMapper<T>{List<User> getAllUsers();
}

启动成功:

打开http://localhost:7001控制台:

然后看下http://localhost:8080/监控中心:

然后,我们将消费者也创建出来,我们将其创建为一个springboot的web工程:

创建完成,引入dubbo-interface这个接口包:

将之前dubbo-consumer工程的代码拷贝过来:

接着引入dubbo和springboot的依赖:

<!-- dubbo和springboot整合的依赖包 --><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency>

代码:

package com.alibaba.dubbo.consumer.controller;import java.util.List;import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.alibaba.dubbo.common.JsonDTo;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.domain.Role;
import com.alibaba.dubbo.service.RoleService;@Controller
public class RoleController {private final static Logger logger = LogManager.getLogger(RoleController.class);//自动注入远程服务@Referenceprivate RoleService<Role> roleService;@RequestMapping(value = "/getAllRoles", method = RequestMethod.GET)public @ResponseBody Object getAllUsers() throws Exception {logger.debug("getAllRoles in............");JsonDTo jsonDto = new JsonDTo();try{List<Role> roles = roleService.getALlRoles();jsonDto.setData(roles);}catch(Exception e){logger.error(e);}return jsonDto;}}
package com.alibaba.dubbo.consumer.controller;import java.util.List;import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.alibaba.dubbo.common.JsonDTo;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.domain.User;
import com.alibaba.dubbo.service.UserService;@Controller
public class UserController {private final static Logger logger = LogManager.getLogger(UserController.class);//自动注入远程服务@Referenceprivate UserService<User> userService;@RequestMapping(value = "/getAllUsers", method = RequestMethod.GET)public @ResponseBody Object getAllUsers() throws Exception {logger.debug("test in............");JsonDTo jsonDto = new JsonDTo();try{List<User> users = userService.getALlUsers();jsonDto.setData(users);}catch(Exception e){logger.error(e);}return jsonDto;}}
package com.alibaba.dubbo.consumer;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;@EnableDubbo
@SpringBootApplication
public class BootDubboConsumerApplication {public static void main(String[] args) {SpringApplication.run(BootDubboConsumerApplication.class, args);}
}
#自定义启动端口
server.port=7777#dubbo服务提供者的应用名称
dubbo.application.name=boot-demotest-consumer
#dubbo注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181#dubbo监控中心协议
dubbo.monitor.protocol=registry

启动!

再看控制台:http://localhost:7001/

再看监控中心:http://localhost:8080/applications.html

可以看到监控中心中服务提供者被一个消费者使用:

以及请求成功数等信息

访问:http://localhost:7777/getAllUsers

及接口的访问报表:

至此,springboot和dubbo整合完成!

dubbo整合springboot图解版(九)相关推荐

  1. SpringBoot+Dubbo整合

    说明: 由于此文章是博主2017年学习时写的文章,项目dubbo版本过低,新项目不应该继续采用此版本.阿里巴巴已经将dubbo重新维护并捐给Apache开源组织,新起了比较新版本的项目整合.学习整合的 ...

  2. SpringBoot+Dubbo整合(一)

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

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

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

  4. Dubbo和zookeeper整合SpringBoot时日志冲突问题

    Dubbo和zookeeper整合SpringBoot时日志冲突问题: ​ 我们在整合springboot,添加依赖的时候,会遇到日志冲突的问题,需先排除自带的zookeeper, ​ 然后单独引入z ...

  5. 微信公众号授权步骤详细步骤介绍和整合springboot开发(java版)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 一.微信公众号授权步骤 首先到微信公众平台注册账号,可以看到有四种类型(服务号,订阅号,小程 ...

  6. ❤️《分布式 Dubbo+Zookenper+SpringBoot》(建议收藏)❤️

    分布式 Dubbo+Zookenper+SpringBoot 文章目录 分布式 Dubbo+Zookenper+SpringBoot 1.分布式理论 1.什么是分布式系统? 2.Dubbo文档 3.单 ...

  7. Nebula Graph学习篇1_基础概念、初步使用、整合SpringBoot使用

    目录 一.基础概念 图数据库的概念 适用场景 数据模型 路径 点的VID 架构 二.初步使用 Windows安装Nebula-Graph服务 Nebula Console 连接 Nebula-Grap ...

  8. 非常详细的FastDFS整合springBoot教程-带文件下载地址

    FastDFS整合springBoot教程 编写该教程的目的 本教程基于已有的springBoot框架进行整合,springBoot构架部分不做教学 为了给自己做笔记,同时为所需童鞋少爬点坑. 目录 ...

  9. Day374.shiro授权Shiro+jsp整合Springboot -Shiro

    Shiro授权 一.授权 授权,即访问控制,控制谁能访问哪些资源.主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的. 二.关键对象 授权可简单理解为who对what( ...

最新文章

  1. Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机
  2. HTML5的未来 - HTML5 还能走多远?
  3. PyTorch-训练
  4. 数据类型之Integer与int
  5. Modbus协议栈开发笔记之三:Modbus TCP Server开发
  6. arm交叉编译jsoncpp
  7. 计算机维修与护理论文,计算机维修与维护方面论文选题 计算机维修与维护论文题目怎样定...
  8. 标识符——Python
  9. 链表的相关面试题(完整)(C语言)
  10. 机器视觉基础知识(一)
  11. windows如何解压tar.gz文件
  12. zib机器人怎么_ZIB智伴机器人好不好 ZIB智伴机器人使用测评
  13. 基于Vue的单页面格式化数据高亮编辑器组件:兼容json/xml/html/txt多种格式
  14. 迅雷看看引领高清内容多屏合一新趋势
  15. 微信官方你真的懂OAuth2?Spring Security OAuth2整合企业微信扫码登录
  16. 事务开启SpringBoot报错 The bean ‘xxxImpl’ could not be injected as a ‘com.xxx.service.impl.xxxServiceImpl
  17. 网络摄像头Androi端显示(mjpeg)源码分析
  18. 远远被大家低估了的实用智能家居设备——窗帘电机
  19. Python学习笔记1入门+简单结构+数据类型+常用操作符
  20. 【多元统计分析】12.逐步回归

热门文章

  1. 小伙创业做奶茶,兢兢业业把奶茶店已经扩张到了10家分店
  2. 电力系统数字化转型历史(跨部门系统自建阶段)
  3. 怎样才能在网上卖东西,手把手教你闲鱼卖货!
  4. 封面文章:寻找技术中国——渴望不再被扼住喉咙!
  5. 自研机器人协调控制系统(2)——六足舞蹈篇
  6. 考研前夕 — 成人的世界里没有那么多童话
  7. mysql查询最后一条记录
  8. 湖北刷脸支付:中国银联联合商业银行推出“刷脸付”产品
  9. macos最新版本是什么_macOS的最新版本是什么?
  10. python下载vip素材_《自拍教程54》Python_批量下载1000个apk(附练手素材)