Dubbo学习-6-springboot整合dubbo
1.在前面帖子和工程的基础上,这里使用springboot整合dubbo,首先创建springboot项目:
https://start.spring.io/ 进入spring Initializr ,创建服务提供者以及消费者的 springboot项目:


下载后保存到本机,然后解压,导入到eclipse里,并修改包名,把原来的接口的实现类复制过来,然后在pom文件中添加公共接口的依赖:

服务消费者工程同理:将OrderServiceImpl.java拷贝到springboot项目中

2.修改orderService接口(test-interface工程中)及实现类(boot-order-service-consumer工程中)的返回值为List<UserAddress>

在boot-order-service-consumer工程中创建一个controller,并在pom文件引入sprongboot web模块的依赖:

编写测试用的controller:
package com.lch.test.controller; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import com.lch.test.service.OrderService; @Controller
public class OrderController { @Autowired
private OrderService orderService; @RequestMapping("/initorder")
@ResponseBody
public Object initOrder(@RequestParam("uid") String userId) {
System.out.println("用户id=" + userId);
return orderService.initOrder(userId); } }
然后引入dubbo依赖:dubbo-spring-boot-starter,这时boot-user-service-provider工程的pom文件内容如下:蓝色部分是额外引入的依赖
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lch.test</groupId>
<artifactId>boot-user-service-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boot-user-service-provider</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <!-- springboot2.0版本以上,使用dubbo-spring-boot-starter 2.0.0及以上版本
默认会把curator-client也导入到工程中
参考https://github.com/apache/dubbo-spring-boot-project -->
<dependency>
31 <groupId>com.alibaba.boot</groupId>
32 <artifactId>dubbo-spring-boot-starter</artifactId>
33 <version>0.2.0</version>
34 </dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 添加公共接口的依赖 -->
42 <dependency>
43 <groupId>com.lch.test</groupId>
44 <artifactId>test-interface</artifactId>
45 <version>0.0.1-SNAPSHOT</version>
46 </dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
添加dubbo的配置文件:
1 #应用的名字
2 dubbo.application.name=user-service-provider
3 #dubbo注册中心的地址
4 dubbo.registry.address=127.0.0.1:2181
5 #dubbo注册中心使用的协议
6 dubbo.registry.protocol=zookeeper
7 # dubbo服务提供者与消费者通信使用的协议
8 dubbo.protocol.name=dubbo
9 # dubbo服务提供者与消费者通信的端口
10 dubbo.protocol.port=20880
11
12 # dubbo监控中心使用的协议:从注册中心自动发现
13 dubbo.monitor.protocol=registry
14 # 要暴露的服务 在需要暴露的服务(即接口的实现类)上面,加上dubbo的@Service注解即可!!!从而不用指定每个类来暴露服务
使用dubbo的@Service暴露服务:

在启动函数中开启基于注解的dubbo功能

接下来改造boot-order-service-consumer工程:
(1)配置文件修改:
1 #应用的名字
2 dubbo.application.name=order-service-consumer
3 #dubbo注册中心的地址
4 dubbo.registry.address=zookeeper://127.0.0.1:2181
5 #dubbo注册中心使用的协议
6 #dubbo.registry.protocol=zookeeper
7 # dubbo服务提供者与消费者通信使用的协议
8 dubbo.protocol.name=dubbo
9 # dubbo服务提供者与消费者通信的端口
10 dubbo.protocol.port=20880
11
12 # dubbo监控中心使用的协议:从注册中心自动发现
13 dubbo.monitor.protocol=registry
14 #使用dubbo的@Reference来调用远程服务
(2)使用dubbo的@Reference注解来调用远程服务:OrderServiceImpl类中@autowired注解替换成dubbo的@Reference注解即可!
package com.lch.test.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.alibaba.dubbo.config.annotation.Reference;
import com.lch.test.bean.UserAddress;
import com.lch.test.service.OrderService;
import com.lch.test.service.UserService; /**
* 1.将服务提供者注册到注册中心 2.让服务消费者去注册中心订阅服务提供者的服务地址
*
* @author
*/
@Service // 这里暂时使用spring的注解
public class OrderServiceImpl implements OrderService { /*
* 这里使用dubbo的@Reference注解来远程引用UserService的服务
*/
// @Autowired
@Reference
UserService userService; public List<UserAddress> initOrder(String userId) {
System.out.println("用户id=" + userId);
// 调用userService 获取用户收货地址
List<UserAddress> addressList = userService.getUserAddressList(userId);
addressList.forEach(address -> {
System.out.println(address);
});
return addressList;
} }
(3)主程序中启用dubbo注解
package com.lch.test; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; @EnableDubbo
@SpringBootApplication
public class BootOrderServiceConsumerApplication { public static void main(String[] args) {
SpringApplication.run(BootOrderServiceConsumerApplication.class, args);
} }
最后,开始测试:
(1)启动zookeeper
(2)启动boot-order-service-consumer ,boot-user-service-provider 的main程序
页面访问http://localhost:8080/initorder?uid=1 ,这时服务的消费者orderService就通过dubbo提供的RPC服务远程调用另外一个进程中的userService服务,返回页面一个地址列表

代码git地址:https://github.com/liuch0228/dubbo-learn.git
Dubbo学习-6-springboot整合dubbo的更多相关文章
- 【转】SpringBoot学习笔记(7) SpringBoot整合Dubbo(使用yml配置)
http://blog.csdn.net/a67474506/article/details/61640548 Dubbo是什么东西我这里就不详细介绍了,自己可以去谷歌 SpringBoot整合Dub ...
- dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级
1. springboot整合dubbo 在provider端,添加maven引入,修改pom.xml文件 引入springboot,版本:2.3.2.RELEASE,dubbo(org.apache ...
- springboot整合dubbo\zookeeper做注册中心
springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...
- SpringBoot整合dubbo(yml格式配置)
yml文件 如果只作为服务的消费者不用暴露端口号,扫描的包名根据自己service改 dubbo: application: name: springboot-dubbo-demo #应用名 regi ...
- Springboot整合Dubbo和Zookeeper
Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...
- springboot整合dubbo+zookeeper最新详细
引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...
- SpringBoot 整合 Dubbo 进行分布式开发
自从Dubbo支持SpringBoot后,Dubbo与Spring的整合变得更加的简单了,下面就是完整的步骤: 1. 引入依赖 <dependency> <groupId>co ...
- SpringBoot整合dubbo
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成. 以上介绍来源于百度百科,具体dubbo相关可以自行查 ...
- spring-boot整合dubbo启动demo
参考资料: https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/ https://github.com/apach ...
随机推荐
- CMD模块打包部署总结
目前线上系统利用Seajs做模板化,但是没有对js和css进行打包,在这次简历搜索优化项目里我尝试对gulp插件对Seajs模块打包. 安装gulp和相关插件 npm install -g gulp ...
- 项目开源-基于ASP.NET Core和EF Core的快速开发框架
前言:作为一名95后的程序猿,已经写了一年多的代码了,为了提升自己的技术水平,所以决定尝试编写一个快速开发框架开源出来,一来提升自己的技术水平,二来助力.NET Core生态发展 写这个框架主要是为了 ...
- CentOS7设置启动模式问题
参考地址 https://www.linuxidc.com/Linux/2015-12/126356.htm
- debian 配置静态ip
1. 查看虚拟机上本机ipcmd→ipconfig 2. 配置网卡2.1 备份原有配置文件配置文件cp /etc/network/interfaces /etc/network/interfacesb ...
- #Week 11 - 343.Integer Break
Week 11 - 343.Integer Break Given a positive integer n, break it into the sum of at least two positi ...
- Centos 下更改MySQL源数据存放目录(datadir)
MySQL在安装完成之后,其源数据默认存放在 /var/lib/mysql/ 目录下,一般情况下,该目录在根目录下,由于Linux系统默认 根目录所在挂载的磁盘容量有限,随着生产数据的不断产生,该目 ...
- LeetCode——141 设计链表
题目: 简单说下思路: 用两个指针,一个跑得快,一个跑得慢(例如一个每次前进两步,一个前进一步),这样只要快指针不会撞上NULL(如果遇到了NULL的情况那么必然不存在环),快指针肯定会和慢指针碰面( ...
- HDFS中NameNode和Secondary NameNode工作机制
NameNode工作机制 0)启动概述 Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作.一旦在内存中成功建立文件系统元数据的映像,则创建一个 ...
- Weak Pair (dfs+树状数组)
Weak Pair (dfs+树状数组) 题意 这个题目是要求:一颗树上,有n个节点,给出每个节点的权值.另外给出一个值k,问有多少对节点满足: \(power[u]*power[v]<=k\) ...
- CSRF verification failed. Request aborted.错误解决办法
在Django项目的页面,提交form表单POST请求时,会出现报错:CSRF verification failed. Request aborted. 需要在form表单中加:{% csrf_to ...