github上有一个开源项目spring-boot-starter-dubbo 提供了spring-boot与dubbo的集成功能,直接拿来用即可。(记得给作者点赞,以示感谢!)

下面是使用步骤,先看下工程的大致结构:

一、引入相关的依赖项

 subprojects {
buildscript {
ext {
springBootVersion = '1.5.3.RELEASE'
}
repositories {
mavenLocal()
maven {
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
} apply plugin: "java"
apply plugin: "maven"
apply plugin: 'idea' targetCompatibility = 1.8
sourceCompatibility = 1.8 repositories {
mavenLocal()
maven {
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
mavenCentral()
} configurations.all {
resolutionStrategy.cacheChangingModulesFor 1, "minutes"
} dependencies {
compile('io.dubbo.springboot:spring-boot-starter-dubbo:1.0.0')
compile('org.springframework.boot:spring-boot-starter-web:1.5.3.RELEASE')
}
}

这是最外层根目录下的build.gradle,关键地方就是最后dependencies引入的2个依赖项

二、service-api中定义接口

 package com.cnblogs.yjmyzz.service.api;

 /**
* Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.
*/
public interface DemoService {
String hello(String nickName);
}

这一步平淡无奇,没什么好说的

三、service-provider

3.1 提供接口实现

 package com.cnblogs.yjmyzz.service.impl;

 import com.alibaba.dubbo.config.annotation.Service;
import com.cnblogs.yjmyzz.service.api.DemoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.
*/
@Service(version = "1.0.0")
public class DemoServiceImpl implements DemoService { Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class); public String hello(String nickName) {
logger.info(nickName + " call me!");
return String.format("hi , %s!", nickName);
}
}

常规套路,不用多说

3.2 编写ServiceProvider主类

 package com.cnblogs.yjmyzz.service;

 import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* Created by yangjunming on 2017/5/21.
*/
@SpringBootApplication
public class ServiceProvider {
public static void main(String[] args) {
SpringApplication.run(ServiceProvider.class, args);
}
}

仍然是spring-boot的经典套路,跟dubbo也没任何关系

3.3 application.yml配置

 server:
port: 8001 spring:
dubbo:
scan: com.cnblogs.yjmyzz.service
application:
name: provider
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
port: 20880

这里是重点,指定了dubbo服务提供方启动所需的zk注册地址,协议类型及端口,包括扫描的包。

四、service-consumer

4.1 定义一个辅助用的Proxy

 package com.cnblogs.yjmyzz.service.proxy;

 import com.alibaba.dubbo.config.annotation.Reference;
import com.cnblogs.yjmyzz.service.api.DemoService;
import org.springframework.stereotype.Component; /**
* Created by yangjunming on 2017/5/21.
*/
@Component
public class ServiceProxy { @Reference(version = "1.0.0")
public DemoService demoService;
}

就是一个标准的spring组件(不管是叫proxy还是叫container都无所谓,随个人喜好),在该组件中持有对Service的引用实例,注意:如果指定了version,则该版本号要与service-provider中的版本号一致

4.2 调用服务

 package com.cnblogs.yjmyzz.service;

 import com.cnblogs.yjmyzz.service.proxy.ServiceProxy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext; /**
* Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.
*/
@SpringBootApplication
public class ServiceConsumer { public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(ServiceConsumer.class, args);
ServiceProxy proxy = ctx.getBean(ServiceProxy.class);
System.out.println(proxy.demoService.hello("菩提树下的杨过"));//调用服务
}
}

一看即明,不多解释。

4.3 application.yml配置

 server:
port: 8002 spring:
dubbo:
scan: com.cnblogs.yjmyzz.service
application:
name: consumer
registry:
address: zookeeper://127.0.0.1:2181

ok,搞定!

上述示例源代码,已托管至github,有需要的朋友自行下载:https://github.com/yjmyzz/spring-boot-dubbo-demo

spring-boot 速成(7) 集成dubbo的更多相关文章

  1. Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布

    微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...

  2. spring boot / cloud (三) 集成springfox-swagger2构建在线API文档

    spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...

  3. Spring Boot HikariCP 一 ——集成多数据源

    其实这里介绍的东西主要是参考的另外一篇文章,数据库读写分离的. 参考文章就把链接贴出来,里面有那位的代码,简单明了https://gitee.com/comven/dynamic-datasource ...

  4. Spring Boot系列——如何集成Log4j2

    上篇<Spring Boot系列--日志配置>介绍了Spring Boot如何进行日志配置,日志系统用的是Spring Boot默认的LogBack. 事实上,除了使用默认的LogBack ...

  5. 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作

    spring boot 2.X集成ES 进行CRUD操作  完整版 内容包括: ============================================================ ...

  6. 15、Spring Boot 2.x 集成 Swagger UI

    1.15.Spring Boot 2.x 集成 Swagger UI 完整源码: Spring-Boot-Demos 1.15.1 pom文件添加swagger包 <swagger2.versi ...

  7. 14、Spring Boot 2.x 集成 Druid 数据源

    14.Spring Boot 2.x 集成 Druid 数据源 完整源码: Spring-Boot-Demos

  8. 12、Spring Boot 2.x 集成 MongoDB

    1.12 Spring Boot 2.x 集成 MongoDB 完整源码: Spring-Boot-Demos

  9. 11、Spring Boot 2.x 集成 HBase

    1.11 Spring Boot 2.x 集成 HBase 完整源码: Spring-Boot-Demos

  10. 10、Spring Boot 2.x 集成 Log4j2

    1.10 Spring Boot 2.x 集成 Log4j2 完整源码: Spring-Boot-Demos

随机推荐

  1. AngularJs-$parsers自我理解-解析

    $parsers 首先先了解下它具体的作用,当用户与控制器进行交互的时候.ngModelController中的$setViewValue()方法就会被调用,$parsers的数组中函数就会以流水线的 ...

  2. 第11月第3天 直播 rtmp yuv

    1. LiveVideoCoreSDK AudioUnitRender ==> MicSource::inputCallback ==> GenericAudioMixer::pushBu ...

  3. 【ORACLE】oracl基本操作笔记

    1.用命令导入导出表 C:\Users\xiang>imp bjlims/bjlims@orcl file="c:\tjlims.dmp" full=y C:\Users\x ...

  4. RabbitMQ集群下队列存放消息的问题

    RabbitMQ中队列有两种模式 1.默认 Default 2.镜像 Mirror [类似于mongoDB,从一直在通过主的操作日志来进行同步] *如果将队列定义为镜像模式,那么这个队列也将区分主从, ...

  5. JS框架图

    一.JS框架

  6. 网站目录下多出的 core 文件

    1.core 文件简介 在一个程序崩溃时,一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的.也就是说这种文件是程序意外中断时候生成的 deb ...

  7. mybatis中的增删改查操作

    在这一个部分,主要进行增删改查的示例书写. 增删改查可以基于xml的,也可以基于注解的方式. 一:对单条数据的查询 1.目录结构 这个使得目录更加清晰 2.User.java 这个使用以前的user表 ...

  8. 005.KVM日常管理2-virt管理

    一 安装管理工具 [root@kvm-host ~]# rpm -qa|grep libguestfs-tools #查看相关管理工具,若没安装,可使用yum安装.   二 日常管理 2.1 命令格式 ...

  9. MVC+easyui,写个树

    前言:网上关于编写组织机构树的教程并不少,我第一次写树的时候也是在网上借鉴别人的技术,走了一些弯路写下了树.是因为这些教程都不是很全面,对于编程新手来说跳跃性太强.所以趁着闲暇时期,我用心的写个树,供 ...

  10. Oracle的一些初步小东西

    经常要用数据库,让他自己启动的话,开机太慢,所以用命令启动方便点.  1.开启:    在运行中输入cmd,进入控制台,lsnrctl start回车,提示启动监听成功后net start Oracl ...