博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring-boot 速成(7) 集成dubbo
阅读量:4318 次
发布时间:2019-06-06

本文共 4566 字,大约阅读时间需要 15 分钟。

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

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

一、引入相关的依赖项

1 subprojects { 2     buildscript { 3         ext { 4             springBootVersion = '1.5.3.RELEASE' 5         } 6         repositories { 7             mavenLocal() 8             maven { 9                 url "http://maven.aliyun.com/nexus/content/groups/public/"10             }11             mavenCentral()12         }13         dependencies {14             classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")15         }16     }17 18     apply plugin: "java"19     apply plugin: "maven"20     apply plugin: 'idea'21 22 23     targetCompatibility = 1.824     sourceCompatibility = 1.825 26     repositories {27         mavenLocal()28         maven {29             url "http://maven.aliyun.com/nexus/content/groups/public/"30         }31         mavenCentral()32     }33 34     configurations.all {35         resolutionStrategy.cacheChangingModulesFor 1, "minutes"36     }37 38     dependencies {39         compile('io.dubbo.springboot:spring-boot-starter-dubbo:1.0.0')40         compile('org.springframework.boot:spring-boot-starter-web:1.5.3.RELEASE')41     }42 }
View Code

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

 

二、service-api中定义接口

1 package com.cnblogs.yjmyzz.service.api;2 3 /**4  * Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.5  */6 public interface DemoService {7     String hello(String nickName);8 }
View Code

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

 

三、service-provider

3.1 提供接口实现

1 package com.cnblogs.yjmyzz.service.impl; 2  3 import com.alibaba.dubbo.config.annotation.Service; 4 import com.cnblogs.yjmyzz.service.api.DemoService; 5 import org.slf4j.Logger; 6 import org.slf4j.LoggerFactory; 7  8 /** 9  * Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.10  */11 @Service(version = "1.0.0")12 public class DemoServiceImpl implements DemoService {13 14     Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);15 16     public String hello(String nickName) {17         logger.info(nickName + " call me!");18         return String.format("hi , %s!", nickName);19     }20 }
View Code

常规套路,不用多说

3.2 编写ServiceProvider主类

1 package com.cnblogs.yjmyzz.service; 2  3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5  6 /** 7  * Created by yangjunming on 2017/5/21. 8  */ 9 @SpringBootApplication10 public class ServiceProvider {11     public static void main(String[] args) {12         SpringApplication.run(ServiceProvider.class, args);13     }14 }
View Code

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

3.3 application.yml配置

1 server: 2   port: 8001 3  4 spring: 5   dubbo: 6     scan: com.cnblogs.yjmyzz.service 7     application: 8       name: provider 9     registry:10       address: zookeeper://127.0.0.1:218111     protocol:12       name: dubbo13       port: 20880

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

 

四、service-consumer

4.1 定义一个辅助用的Proxy

1 package com.cnblogs.yjmyzz.service.proxy; 2  3 import com.alibaba.dubbo.config.annotation.Reference; 4 import com.cnblogs.yjmyzz.service.api.DemoService; 5 import org.springframework.stereotype.Component; 6  7 /** 8  * Created by yangjunming on 2017/5/21. 9  */10 @Component11 public class ServiceProxy {12 13     @Reference(version = "1.0.0")14     public DemoService demoService;15 }

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

4.2 调用服务

1 package com.cnblogs.yjmyzz.service; 2  3 import com.cnblogs.yjmyzz.service.proxy.ServiceProxy; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.autoconfigure.SpringBootApplication; 6 import org.springframework.context.ConfigurableApplicationContext; 7  8 /** 9  * Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.10  */11 @SpringBootApplication12 public class ServiceConsumer {13 14     public static void main(String[] args) {15         ConfigurableApplicationContext ctx = SpringApplication.run(ServiceConsumer.class, args);16         ServiceProxy proxy = ctx.getBean(ServiceProxy.class);17         System.out.println(proxy.demoService.hello("菩提树下的杨过"));//调用服务18     }19 }
View Code

一看即明,不多解释。

4.3 application.yml配置

1 server: 2   port: 8002 3  4 spring: 5   dubbo: 6     scan: com.cnblogs.yjmyzz.service 7     application: 8       name: consumer 9     registry:10       address: zookeeper://127.0.0.1:2181

ok,搞定!

 

上述示例源代码,已托管至github,有需要的朋友自行下载:

转载于:https://www.cnblogs.com/yjmyzz/p/spring-boot-integrate-with-dubbo-tutorial.html

你可能感兴趣的文章
Activity的几种启动跳转方式
查看>>
LCA最近公共祖先Tarjan(离线)
查看>>
牛客练习赛16 E求值
查看>>
matlab rank
查看>>
Asp.net系列--基础篇(三)
查看>>
css基础
查看>>
如何在tomcat中如何部署java EE项目
查看>>
【Python基础教程第2版】——第二讲:列表和元组
查看>>
小常识
查看>>
使用vscode开发python
查看>>
swift--调用系统单例实现打电话
查看>>
0038-算一算是一年中的第几天
查看>>
51nod 1094 【水题】
查看>>
003.第一个动画:绘制直线
查看>>
ng-深度学习-课程笔记-2: 神经网络中的逻辑回归(Week2)
查看>>
正则表达式的搜索和替换
查看>>
个人项目:WC
查看>>
地鼠的困境SSL1333 最大匹配
查看>>
flume+elasticsearch+kibana遇到的坑
查看>>
【MM系列】在SAP里查看数据的方法
查看>>