博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot2.0+dubbo整合分布式服务发布和调用
阅读量:6820 次
发布时间:2019-06-26

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

       最近项目上要对以前的老项目做分布式的整改,因此我专门花了点时间研究下当前比较热门的dubbo和springboot结合使用,以前使用过dubbo,但是没有与springboot结合过,在网上查了点资料,感觉要么是springboot版本过低,要么是dubbo版本过低,反正基本是千篇一律,查考价值不大。下面我们就直入主题,看下springboot+dubbo的简单使用:

     首先是新建三个项目:dubbo-common:  主要存放服务发布的接口以及发布和调用端的公共对象,dubbo-provider:   服务提供方                    dubbo-consumer:  服务消费方。新建项目就不说了,直接上maven依赖,其中dubbo-provier和dubbo-consumer的依赖基本一样

 

4.0.0
org.dubbo
dubbo-provider
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
org.springframework.boot
spring-boot-starter
com.alibaba
dubbo
2.6.2
spring
org.springframework
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
org.javassist
javassist
3.20.0-GA
org.jboss.netty
netty
3.2.5.Final
org.apache.zookeeper
zookeeper
3.4.10
slf4j-log4j12
org.slf4j
com.github.sgroschupf
zkclient
0.1
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
org.springframework.boot
spring-boot-maven-plugin
View Code

 

大家从pom文件中可以看到,我的项目使用的是springboot的2.0.4版本,dubbo使用的是2.6.2,重点是dubbo和springboot的结合包使用的是如下依赖:

<dependency>

    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

这个很重要,因为不同的dubbo和springboot的版本不一样,可能要选择的结合包也不一样。这里我只展示使用xml来实现简单功能,首先我们先来看xml配置使用:

第一:在公共模块增加一个接口代码,代码略

第二:在提供方实现相应的接口,代码没有任何业务逻辑,只是演示用,

1 package org.yongcheng.liuyang.service.impl; 2  3 import org.yongcheng.liuyang.service.TestService; 4  5 import com.alibaba.dubbo.config.annotation.Service; 6  7 //@Service(version = "1.0.0") 8 @org.springframework.stereotype.Service 9 public class TestServiceImpl implements TestService {10     11     @Override12     public String sayHello(String name) {13         return name+"hello";14     }15 }
View Code

第三:配置dubbo.xml文件具体如下代码:

View Code

第四:提供程序启动类

package org.yongcheng.liuyang;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource("classpath:dubbo.xml")public class ProviderApp {    public static void main(String[] args) throws Exception {        SpringApplication.run(ProviderApp.class, args);    }}
View Code

好了提供方的代码完成,接下俩就是消费方的步骤:

消费方的pom依赖和提供方基本一样,直接复用,但是由于消费方使用的是web工程,因此需要多一个依赖:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

第一:pom文件:

4.0.0
org.yongcheng.liuyang
dubbo-consumer
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
com.alibaba
dubbo
2.6.2
spring
org.springframework
org.springframework.boot
spring-boot-starter-web
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
org.javassist
javassist
3.20.0-GA
org.jboss.netty
netty
3.2.5.Final
org.apache.zookeeper
zookeeper
3.4.10
slf4j-log4j12
org.slf4j
com.github.sgroschupf
zkclient
0.1
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
org.springframework.boot
spring-boot-maven-plugin
View Code

第二:简单业务代码实现:

package org.yongcheng.liuyang.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.yongcheng.liuyang.service.TestService;import com.alibaba.dubbo.config.annotation.Reference;@RestController@RequestMapping(produces="application/json;charset=UTF-8")public class IndexActroller {//    @Reference(url="dubbo://localhost:20880")    @Autowired    private TestService testService;        @GetMapping("/sayHello")    public String sayHello(String name){        return testService.sayHello(name);    }}
View Code

第三:配置dubbo.xml文件具体如下代码:

View Code

第四:提供程序启动类

package org.yongcheng.liuyang;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource("classpath:dubbo.xml")public class ConsumerApp {    public static void main(String[] args) throws Exception {        SpringApplication.run(ConsumerApp.class, args);    }}
View Code

好了,这样整体的发布和调用代码已经完毕,接下来先启动提供方的代码,然后在启动调用方的程序,然后我们在浏览器中输入我们的url进行验证即可!

如果有朋友需要注解实现的代码,请留言!!!                     

转载于:https://www.cnblogs.com/ljy-20180122/p/9823470.html

你可能感兴趣的文章
利用安卓手机搭建WEB服务器
查看>>
小巧玲珑:机器学习届快刀XGBoost的介绍和使用
查看>>
intellij开发安卓与genymotion配合
查看>>
jmeter大神博客笔记
查看>>
java.lang.NoClassDefFoundError: javax/annotation/Priority
查看>>
skimage的安装,scikit-image
查看>>
springmvc-mvc:resource标签使用
查看>>
如何理解php的依赖注入
查看>>
洛谷P2084 进制转换
查看>>
直接上手从项目中学习很重要
查看>>
[转载]非常量引用的初始值必须为左值的问题
查看>>
C# 线程池执行操作例子
查看>>
duubo开发时直连(不需要注册中心)
查看>>
MongoDB数据查询详解
查看>>
Ubuntu 16.04安装IntelliJ IDEA时快捷键冲突设置
查看>>
laravel模型中打印sql语句
查看>>
【数据库】百万级数据库SQL优化大总结
查看>>
Socket实现
查看>>
Ubuntu界面重新安装图形界面
查看>>
去哪儿网支付系统架构演进
查看>>