玩转Spring Boot 集成Dubbo
玩转Spring Boot 集成Dubbo
使用Spring Boot 与Dubbo集成,这里我之前尝试了使用注解的方式,简单的使用注解注册服务其实是没有问题的,但是当你涉及到使用注解的时候在服务里面引用事务,注入其他对象的时候,会有一些问题。于是我就果断放弃了注解了,使用的是XML,这里可能介绍的是Dubbo,但是如果使用Dubbox的话,基本上是兼容的。接下来,将说说使用XML的方式与Spring Boot在一起开发。
1.创建工程在pom.xml中加入依赖
创建工程名为: (1)springboot-dubbo-provide (2)springboot-dubbo-api (3)springboot-dubbo-consume springboot-dubbo-api工程主要是放一些service接口,用于提供给消费者使用 。springboot-dubbo-provide工程用于提供服务。 springboot-dubbo-consume工程为消费者。在springboot-dubbo-provide工程中打开pom.xml加入以下依赖,完整代码如下:
[html] view plain copy
4.0.0
com.chengli
springboot-dubbo-provide
0.0.1-SNAPSHOT
jar
springboot-dubbo-provide
http://maven.apache.org
org.springframework.boot
spring-boot-starter-parent
1.4.3.RELEASE
UTF-8
1.8
2.5.3
3.4.6
0.1
com.chengli
springboot-dubbo-api
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter
com.alibaba
dubbo
org.springframework
spring
${com.alibaba.dubbo.version}
org.apache.zookeeper
zookeeper
${org.apache.zookeeper.version}
com.github.sgroschupf
zkclient
${com.github.sgroschupf.zkclient.version}
org.springframework.boot
spring-boot-maven-plugin
打开springboot-dubbo-consume工程,在pom.xml中加入以下依赖,完整代码如下:
[html] view plain copy
4.0.0
com.chengli
springboot-dubbo-consume
0.0.1-SNAPSHOT
jar
springboot-dubbo-consume
http://maven.apache.org
org.springframework.boot
spring-boot-starter-parent
1.4.3.RELEASE
UTF-8
1.8
2.5.3
3.4.6
0.1
com.chengli
springboot-dubbo-api
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
com.alibaba
dubbo
org.springframework
spring
${com.alibaba.dubbo.version}
org.apache.zookeeper
zookeeper
${org.apache.zookeeper.version}
com.github.sgroschupf
zkclient
${com.github.sgroschupf.zkclient.version}
org.springframework.boot
spring-boot-configuration-processor
true
org.springframework.boot
spring-boot-maven-plugin
2.Dubbo配置
2.1springboot-dubbo-provide服务提供者
(1)在springboot-dubbo-provide项目中创建入口启动类MainConfig,完整代码如下:
[java] view plain copy
package com.chengli.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainConfig {
public static void main(String[] args) {
SpringApplication.run(MainConfig.class, args);
try {
System.in.read();
} catch (Exception e) {
e.printStackTrace();
}
}
}
(2)创建Dubbo配置类
[java] view plain copy
package com.chengli.springboot.dubbo;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:dubbo/dubbo.properties")
@ImportResource({ "classpath:dubbo/*.xml" })
public class DubboConfig {
}
(3)创建Dubbo配置文件 在src/main/resources下新建文件夹dubbo,并加入以下配置: dubbo-provider.xml内容如下:
[html] view plain copy
注意:这里我发布的example服务是示例,具体的根据实际修改
(4)创建dubbo.properties
[html] view plain copy
#应用名称
dubbo.application.name=example-provider
#注册中心类型
dubbo.registry.protocol=zookeeper
#注册中心地址
dubbo.registry.address=127.0.0.1:2181
#暴露服务方式
dubbo.protocol.name=dubbo
#暴露服务端口
dubbo.protocol.port=20880
2.2springboot-dubbo-consume服务消费者
(1)创建入口启动类MainConfig
[java] view plain copy
package com.chengli.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainConfig {
public static void main(String[] args) {
SpringApplication.run(MainConfig.class, args);
}
}
(2)创建Dubbo配置类
[java] view plain copy
package com.chengli.springboot.dubbo;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:dubbo/dubbo.properties")
@ImportResource({ "classpath:dubbo/*.xml" })
public class DubboConfig {
}
(3)创建Dubbo配置文件 在src/main/resources下新建文件夹dubbo,并加入以下配置: dubbo-consume.xml内容如下:
[html] view plain copy
(4)创建dubbo.properties
[html] view plain copy
#应用名称
dubbo.application.name=example-consume
#注册中心类型
dubbo.registry.protocol=zookeeper
#注册中心地址
dubbo.registry.address=127.0.0.1:2181
到这里基本上就已经可以了,不过测试类的代码我就不贴上来了。只要在API中定义接口实现即可。使用Spring Boot 与Dubbo集成的时候,需要注意的是,不要使用Spring Boot提供的devtools热启动,因为devtools提供了两个ClassLoader,加载策略问题导致出现错误,无法启动。如果开发中需要热加载,那么使用Spring 提供的springloaded。
有兴趣的朋友可以加群探讨相互学习:
玩转Spring Boot 集成Dubbo的更多相关文章
- Spring boot 集成 Dubbo 快速搭建
架构: 1.ZooKeeper:服务注册中心 2.api工程:提供对外暴露的服务API 3.provider:服务提供者 4.consumer:服务消费者 示例如下: (一)新建 Maven 项目 a ...
- spring boot集成dubbo
spring-boot-start-dubbo spring-boot-start-dubbo,让你可以使用spring-boot的方式开发dubbo程序.使dubbo开发变得如此简单. 如何使用 1 ...
- Spring boot 集成Dubbo简单版,准备工作,
一.GitHub上找寻Dubbo资源 阿里巴巴在其GitHub上已经写好一个Github案例所以我们只要进入其Git上就可以看到和clone这个项目 二.阿里巴巴GitHub使用 https://gi ...
- 一个spring boot集成dubbo的小例子
请移步github,介绍和代码均在上面了:https://github.com/wuxun1997/voicebox 这里再多说两句.github上的这个小例子默认使用组播作为注册中心,你也可以把组播 ...
- 玩转spring boot——结合redis
一.准备工作 下载redis的windows版zip包:https://github.com/MSOpenTech/redis/releases 运行redis-server.exe程序 出现黑色窗口 ...
- 玩转spring boot——结合阿里云持续交付
前言 在互联网项目中,项目测试.部署往往需要花费大量时间.传统方式是在本地打包.测试完毕程序,然后通过ftp上传至服务器,再把测试的配置文件修改为生产环境的配置文件,最后重新运行服务.这一过程如果交给 ...
- spring boot 集成 zookeeper 搭建微服务架构
PRC原理 RPC 远程过程调用(Remote Procedure Call) 一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远程系统资源,R ...
- 玩转spring boot——war部署
前言 之前部署spring boot应用是通过直接输入命令“java -jar”来实现的.而有些情况,由于部署环境的制约,只能把项目从jar转换成war才能部署,如新浪云sae的java环境容器.那怎 ...
- 玩转spring boot——结合docker
前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 liunx机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有 ...
随机推荐
- jquery 对象的 height、innerHeight、outerHeight 的区别以及DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
前言:jquery 对象的 height.innerHeight.outerHeight,还有 DOM 元素的 clientHeight.offsetHeight.scrollHeight.offse ...
- XML序列化与REST WCF Data Contract匹配时遇到的2个问题
问题一: XML序列化与RESTful WCF Data Contract不能匹配,无法传递类的值. 现象: 给类加上[Serializable]Attribute,可以成功序列化,但是WCF Ser ...
- BZOJ3672: [Noi2014]购票(dp 斜率优化 点分治 二分 凸包)
题意 题目链接 Sol 介绍一种神奇的点分治的做法 啥?这都有根树了怎么点分治?? 嘿嘿,这道题的点分治不同于一般的点分治.正常的点分治思路大概是先统计过重心的,再递归下去 实际上一般的点分治与统计顺 ...
- 正能量:You Are the Best
Success comes from knowing that you did your best to become the best that you are capable of becomin ...
- HTML5和IOS、Android之间的交互
HTML5向IOS.Android传参: html给native传参需要注意三点: 1.判断终端设备,一般我们都是双系统开发,android和ios语言又不一样:我们需要用不同的方法给他们传递参数: ...
- JavaSE (二)
this关键字 当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this. 用法:对当前对象的默认引用 调用自己的的构造方法. 用在构造方法内部,区 ...
- DDL为什么不能rollback?
转自 http://blog.csdn.net/dba_waterbin/article/details/8621367 在Oracle中DDL语句将转化为对数据字典表的DML语句:比如,一个简单的修 ...
- PRINCE2是什么?
PRINCE是PRoject IN Controlled Environment(受控环境下的项目管理)的简称. PRINCE2描述了如何以一种逻辑性的.有组织的方法,按照明确的步骤对项目进行管理. ...
- The directory '/home/stone/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If execu
使用sudo pip install ......的时候出现下面一段黄色的代码: The directory '/home/stone/.cache/pip/http' or its parent d ...
- 使用 Jenkins 和 Team Services 将应用部署到 Linux VM
持续集成 (CI) 和持续部署 (CD) 是一个管道,可以通过它生成.发布和部署代码. Team Services 针对到 Azure 的部署提供了一组完整的功能完备的 CI/CD 自动化工具. Je ...