SpringBoot2.0之整合Dubbo
Dubbo支持协议
Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。
Spring Cloud 项目feign客户端 继承依赖方式实现重构项目
jar: 打成jar包
pom:依赖被被人继承的 公共依赖 字符模块
war:达成一个web项目 里面包含jar包、WEB-INF
toov5-dubbo-parent pom
toov5-public-api-service pom 提供会员接口 jar类型 pom项目没有Java代码的哦
toov5-api-member-service
toov5-api-member-service-impl 会员接口实现类(这个不是公开的) (点击parent创建的,需要引入 实现的interface )
toov5-dubbo-order-web jar(springboot) 订单项目 调用会员项目 ps:订单调用会员时候 引入公共接口 底层调用dubbo协议 帮助实现 *(dubbo原理 拿到类的class的地址信息,反射。)
parent引入共同依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>toov5-dubbo-parent </groupId>
<artifactId>dubbo-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<curator-framework.version>4.0.1</curator-framework.version>
<zookeeper.version>3.4.13</zookeeper.version>
<dubbo.starter.version>0.2.0</dubbo.starter.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.starter.version}</version>
</dependency> <!-- <dependency 在上面已经实现好了>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator-framework.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> -->
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> <modules>
<module>toov5-api-member-service-impl</module>
<module>toov5-public-api-service</module>
</modules>
</project>
点击parent 创建 maven pom :toov5-public-api-service (公共接口maven model) 点击 toov5-public-api-service 创建 toov5-api-member-service jar (写接口 interface)
点击parent 创建 maven jar : toov5-api-member-service-impl 并且 引入: toov5-api-member-service 的依赖 dependency
接口:
package com.toov.api.member.service;
public interface MemberService {
public String getUser();
}
实现类:
package com.toov.api.member.service.impl; import com.alibaba.dubbo.config.annotation.Service;
import com.toov.api.member.service.MemberService; @Service
public class MemberServiceImpl implements MemberService { public String getUser() {
System.out.println("订单服务调用会员服务");
return "订单服务调用会员服务成功";
} }
启动类:
package com.toov.api.member.service.impl; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; @EnableDubbo
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
yml:
server:
port: 8080
dubbo:
application:
name: member
#表示采用的dubbo协议
protocol:
name: dubbo
#发布的端口号
port: 20880
registry:
address: zookeeper://192.168.91.5:2181
PS:如果需要写版本号的 springboot没有帮你整合 如果不需要写版本号 已经帮忙整合了
Dubbo发布时候 采用注解方式! 使用 @Service注解 进行发布服务
记得采用 Dubbo 而不是 spring 的注解!
区别: spring 提供的 是注入到Spring容器中 dubbo是注册到注册中心去!
扫的实现类 注册到dubbo 注册中心中去
启动效果:

点击parent 创建 toov5-dubbo-order-web jar 然后引入接口依赖!
package toov5.order.controller; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference;
import com.toov.api.member.service.MemberService; @RestController
public class OrderController {
@Reference //dubbo提供的 而不是@Autowired
private MemberService memberService;
@RequestMapping("/orde")
public String orderToMember() {
return memberService.getUser(); } }
启动类:
package toov5.order.controller; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
@EnableDubbo
@SpringBootApplication
public class AppOrder {
public static void main(String[] args) {
SpringApplication.run(AppOrder.class, args);
}
}
yml
server:
port: 8082 #tomcat端口号
###dubbo 注册服务名称
dubbo:
application:
name: order
registry:
address: zookeeper://192.168.91.5:2181
consumer: #调用服务的超时时间
timeout: 5000
运行并且访问:

大家可以多启动几个 发布服务端口 然后 玩玩 就集群效果 我就不做展示了
SpringBoot2.0之整合Dubbo的更多相关文章
- SpringBoot2.0之整合Kafka
maven依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- SpringBoot2.0之整合Apollo
Spring Boot客户端对接阿波罗服务器端 核心源码都在这个压缩包里面 封装好了环境 运行shell脚本就ok了 下面进入到本地maven仓库: 远程仓库apollo的jar包 只能打包到本地或者 ...
- SpringBoot2.0之整合ElasticSearch
就类比数据库到时候去实现 服务器端配置 集群名字 与yml名字一致 pom: <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...
- SpringBoot2.0之整合ActiveMQ(发布订阅模式)
发布订阅模式与前面的点对点模式很类似,简直一毛一样 注意:发布订阅模式 先启动消费者 公用pom: <project xmlns="http://maven.apache.org/PO ...
- SpringBoot2.0之整合ActiveMQ(点对点模式)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis
SpringBoot 整合 Mybatis 有两种常用的方式,一种就是我们常见的 xml 的方式 ,还有一种是全注解的方式.我觉得这两者没有谁比谁好,在 SQL 语句不太长的情况下,我觉得全注解的方式 ...
- springboot2.0 Mybatis 整合
原文:https://blog.csdn.net/Winter_chen001/article/details/80010967 环境/版本一览: 开发工具:Intellij IDEA 2017.1. ...
- 每天学点SpringCloud(一):使用SpringBoot2.0.3整合SpringCloud
最近开始学习SpringCloud,在此把我学习的过程记录起来,跟大家分享一下,一起学习.想学习SpringCloud的同学赶快上车吧. 本次学习使用得SpringBoot版本为2.0.3.RELEA ...
- SpringBoot2.0.3整合Quartz2.3.0实现定时任务
转载:https://www.cnblogs.com/ealenxie/p/9134602.html 关于别人写的quartz学习的地址:https://blog.csdn.net/lkl_csdn/ ...
随机推荐
- 2015年度新增开源软件排名TOP100
2015年度新增开源软件排名TOP100 本榜单包含2015年开源中国新收录的软件中,根据软件本身的关注度.活跃程度进行排名前100名的软件.从这份榜单中或许可以了解到最新业界的趋势. 1.Switc ...
- HTML5 Canvas 绘制新西兰国旗
代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...
- JAVA Eclipse创建Android程序如何实现MainActivity和Fragment相互传递数据
最简单的方法是直接强制生成一个MainActivity的实例,然后可以执行其中的方法,当然也是可以传递参数的 更加复杂的用法可以参考: http://blog.csdn.net/huangyabin0 ...
- 不让命令记录到history中
先执行export HISTCONTROL=ignoresapce 然后再敲命令时在命令前面加一个空格
- 【日常学习】【并查集+map】codevs2639 约会计划题解
然而我居然让诸城一中悲剧机房的C++可以编译了··· 直接上题目 题目描写叙述 Description cc是个超级帅哥,口才又好.rp极高(这句话似乎降rp),又非常的幽默,所以非常多mm都跟他关系 ...
- NodeJS待重头收拾旧山河(重拾)
介绍 Node.js®是一个基于Chrome V8 JavaScript引擎构建的JavaScript运行时. Node.js使用事件驱动的非阻塞I / O模型,使其轻便且高效. Node.js的包生 ...
- vscode 编译调试c/c++的环境配置
首先看了一下别人写的文章 http://blog.csdn.net/c_duoduo/article/details/51615381 在按照上文链接博主的安装步骤进行到MINGW的安装时出现一个问题 ...
- 将到来的战略转变:移动 Web 还是移动 Apps?
目前来看,移动应用比移动网站的易用性更高,但变化即将发生,移动网站最终将优于Apps,成为更好的策略选择. 一家公司制定移动策略时,最重要的问题是:是否需要考虑为移动设备特别做点什么.一些公司永远都不 ...
- Unity3D研究院编辑器之自定义默认资源的Inspector面板
比如编辑模式下对场景或者特定文件夹有一些操作可以在这个面板里来完成. 代码如下: using System.Collections; using System.Collections.Generic; ...
- Android_YouthArea之ApeendTextView
这次给我自己的项目打个广告:http://sj.qq.com/myapp/detail.htm?apkName=com.youthcommunity 这款APP 不同于SoHOT是积极的,是年轻人的信 ...