基于springboot构建dubbo的入门demo
之前记录了构建dubbo入门demo所需的环境以及基于普通maven项目构建dubbo的入门案例,今天记录在这些的基础上基于springboot来构建dubbo的入门demo;众所周知,springboot极大的简化了我们的日常开发中的配置工作,所以使用springboot来构建dubbo也变的尤为简单;需求与上篇文章的一样,步骤总结为以下几点;
一、在application.properties编写dubbo的配置文件关键代码如下:
提供者:
- # 当前服务的名称
- dubbo.application.name=boot-user-service-provider
- # 注册中心的地址 这里注册中心用的是zookeeper
- dubbo.registry.address=127.0.0.1:2181
- dubbo.registry.protocol=zookeeper
- # 指定通信规则(通信协议:通信端口)
- dubbo.protocol.name=dubbo
- dubbo.protocol.port=20883
- # 监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心
- dubbo.monitor.protocol=registry
消费者:
- server.port=8888
- # 当前服务的名称
- dubbo.application.name=boot-order-service-consumer
- # 注册中心的地址 这里注册中心用的是zookeeper
- dubbo.registry.address=127.0.0.1:2181
- dubbo.registry.protocol=zookeeper
- # 监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心
- dubbo.monitor.protocol=registry
二、在springboot项目的启动类上添加@EnableDubbo注解表示开启基于注解的dubbo模型,如无其他特殊需求,提供者和消费一样,代码如下:
- @SpringBootApplication
- @EnableDubbo // 开启基于注解的dubbo模型
- public class BootUserServiceProviderApplication {
- public static void main(String[] args) {
- SpringApplication.run(BootUserServiceProviderApplication.class, args);
- }
- }
三、对于提供者里面的各个实现类我们需要添加@Service标签来暴露服务,对于消费者我们需要在引用提供者的时候添加@Reference来引用远程的提供者
与普通maven项目相比,基于springboot的dubbo项目配置文件的位置变化了也更倾向于注解而非xml来配置了,当然,对于习惯于xml配置的人来说,springboot也是可以实现基于xml的配置的
提供者需要暴露的服务:
- package com.darling.boot.service;
- import com.alibaba.dubbo.config.annotation.Service;
- import com.darling.pubIn.bean.User;
- import com.darling.pubIn.service.UserService;
- import org.springframework.stereotype.Component;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @author 董琳琳
- * @date 2018/10/8 11:20
- * @description
- */
- @Service // 暴露服务
- @Component
- public class UserServiceImpl implements UserService {
- @Override
- public List<User> getUserAddressList(String userId) {
- ArrayList list = new ArrayList();
- list.add(new User(3,"韦德3","男",36,"迈阿密"));
- list.add(new User(23,"詹姆斯23","男",34,"洛杉矶"));
- list.add(new User(24,"科比24","男",39,"洛杉矶"));
- return list;
- }
- @Override
- public void sayHello() {
- System.out.println("HELLO YSXLXSH");
- }
- }
消费者调用服务:
- package com.darling.boot.order.service;
- import com.alibaba.dubbo.config.annotation.Reference;
- import com.darling.pubIn.bean.User;
- import com.darling.pubIn.service.OrderService;
- import com.darling.pubIn.service.UserService;
- import org.springframework.stereotype.Service;
- import java.util.List;
- /**
- * @author 董琳琳
- * @date 2018/10/8 11:42
- * @description
- */
- @Service
- public class OrderServiceimpl implements OrderService {
- @Reference // 引用远程服务
- UserService service;
- @Override
- public List<User> initOrder(String userId) {
- return service.getUserAddressList(userId);
- }
- }
至此基于springboot搭建dubbo入门demo的关键代码已写完,需要注意的是这里我的测试不是像之前基于maven构建时的 单元测试,而是给消费者搭建成一个web项目通过从浏览器发送请求来测试是否调用成功,消费者的controller如下:
- package com.darling.boot.order.controller;
- import com.darling.pubIn.bean.User;
- import com.darling.pubIn.service.OrderService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.util.List;
- /**
- * @author 董琳琳
- * @date 2018/10/8 11:44
- * @description 订单Controller
- */
- @RestController
- public class OrderController {
- @Autowired
- OrderService service;
- @RequestMapping(value = "/getUserList/{userId}")
- public List<User> getUserList(@PathVariable String userId){
- return service.initOrder(userId);
- }
- }
至此,基于springboot搭建dubbo的入门案例基本完成,关于dubbo案例的所有代码全部上传至GitHub,地址如下:
公共接口服务:https://github.com/darling2047/pub-interfence
基于springboot的提供者:https://github.com/darling2047/boot-user-service-provider
基于springboot的消费者:https://github.com/darling2047/boot-order-service-consumer
基于普通maven项目的提供者:https://github.com/darling2047/user-service-provider
基于普通maven项目的消费者:https://github.com/darling2047/order-service-consumer
以后有时间再记录下dubbo的各项常用配置
基于springboot构建dubbo的入门demo的更多相关文章
- 基于SpringBoot构建分模块项目
前言 步骤过于详细,多图慎入!!! 假设一个场景,要开发一个4s店维修部的办公系统,其功能有:前台接待,维修抢单,财务结算,库存管理.于是我们创建一个项目balabalabala写完交工. 一段时间后 ...
- springboot与dubbo整合入门(三种方式)
Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创 ...
- [SpringBoot guides系列翻译]SpringBoot构建RESTful程序入门
原文地址 构建一个RESTful的WebService 这个指南将带你用Spring创建一个RESTful的helloworld程序. 你将完成 在下面地址上创建一个接收http get请求的服务 h ...
- 基于vue-cli构建vue-router的入门级demo
前言 本案列仅针对刚刚入门vue学习的伙伴,博主也是刚刚在学基于vue-cli搭建脚手架项目,对于前端大牛,可以移步. 快速搭建vue-cli环境 如何搭建基于vue-cli项目,这里不再叙述,如果不 ...
- 基于springboot的Dubbo的常规总结
1.引入jar包: <!-- Spring Boot Dubbo 依赖 --> <dependency> <groupId>com.alibaba.spring.b ...
- 基于SpringBoot的Swagger2快速入门
1. Springboot 集成 Swagger2 1.1 导入Swagger2 依赖 <!-- https://mvnrepository.com/artifact/io.springfox/ ...
- Dubbo+Zookeeper 入门Demo
1.Zookeeper安装及启动 可参考这篇文章https://www.cnblogs.com/geekdc/p/5948326.html 从下载到启动都描述的很详细,按照文章一步一步走即可. 2.D ...
- dubbo快速入门demo
参考文章 https://blog.csdn.net/abcwanglinyong/article/details/81906027 该demo包含三个项目,分别是: 服务提供端项目:provider ...
- springboot整合dubbo+zookeeper最新详细
引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...
随机推荐
- 漂亮数组 Beautiful Array
2019-04-06 16:09:56 问题描述: 问题求解: 本题还是挺有难度的,主要是要考虑好如何去进行构造. 首先考虑到2 * A[i] = A[j] + A[k],那么j,k就必须是同奇同偶, ...
- Django web框架-----Django templates模板
说明:mytestsite是django框架下的项目,quicktool是mytestsite项目中的应用 一般的变量之类的用 {{ }}(变量),功能类的比如循环.条件判断是用 {% %}(标签) ...
- C语言缓冲区
定义 缓冲区是内存空间的一部分,用于缓冲输入或输出的数据.根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 类型 缓冲区分为三种类型:全缓冲.行缓冲和不带缓冲. 1.全缓冲 在这种情况 ...
- 修改 input / textarea placeholder 属性的颜色和字体大小
话不多说,直接上代码: input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #666; fon ...
- 一个简单的C语言程序(详解)
C Primer Plus之一个简单的C语言程序(详解) #include <stdio.h> int main(void) //一个简单的 C程序 { int num; //定义一个名为 ...
- Analysis servlet
@WebServlet("/cdiservlet") public class NewServlet extends HttpServlet { private Message m ...
- Intellij IDEA 自动清除无效 import
打开偏好设置: 输入auto import: 注:想在以后的工程中都自动清除,可以在File中如下图操作:
- VS2015在win10上编译的程序在Win7上运行的方法
在win10系统上使用vs2015编译了一个32位的应用程序.在win7上报错无法启动. 下面的win7系统上是可以运行的 无法运行的win7系统: 报错: 1.应用程序无法正常启动(0xc00000 ...
- Previous operation has not finished;run 'cleanup' if it was interrupted;Please execute the 'Cleanup' command.
今天更新文件夹时svn报错如下 提示说让clean up,但是clean up又提示fail,让继续clean up,这样就陷入死循环了…… 搜了多种解决办法后找到原因:当时正在打开着svn的某个文件 ...
- 浏览器与WEB服务器交互
问题:打开浏览器,在地址栏输入url到页面展现,整个过程发生了什么? 图示: 步骤: 1 用户输入网址,包括协议和域名. 2 浏览器先查找自身缓存有没有记录,没有的话再找操作系统缓存. 3 当浏览器在 ...