所需环境

zookeeper作为dubbo的注册中心,dubbo服务提供方和消费方都需要在zookeeper注册中心注册。
可参考:http://blog.csdn.net/jingyangv587/article/details/78901508
注意:启动后,请勿关闭!

开始搭建

###1. 服务提供方和消费方都需要的包(这里我新建的maven工程为pom工程,将共同的项目依赖写到pom.xml中)

  • 总的项目结构为

  • pom.xml文件内容为

<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>com.test</groupId><artifactId>dubbo-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><properties><motan.version>0.3.0</motan.version><!-- 在阿里巴巴内部广泛使用的GA版本为:2.4.9,强烈推荐此版本 --><dubbo.version>2.5.3</dubbo.version><dubbox.version>2.8.4</dubbox.version><spring.version>4.3.6.RELEASE</spring.version><java.version>1.7</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><!-- spring相关 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.6.11</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.11</version></dependency></dependencies><modules><module>demo-api</module><module>dubbo-consumer</module><module>dubbo-provider</module></modules>
</project>

2. 在demo-api中定义服务接口(注意服务提供方和消费方都需要依赖这个项目)

package com.test;public interface DemoService{  String sayHello(String name);
} 

3. 服务提供方实现

  • 项目结构
  • 实现接口
package com.test;
import org.springframework.stereotype.Service;import com.test.DemoService;
@Service("demoService")
public class DemoServiceImpl implements DemoService{@Overridepublic String sayHello(String name) {// TODO Auto-generated method stubreturn name; }
}
  • 声明暴露服务:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 -->  <dubbo:application name="dubbo_provider"  />  <!-- 使用zookeeper注册中心暴露服务地址 -->  <dubbo:registry address="zookeeper://127.0.0.1:2181" />   <!-- 用dubbo协议在20880端口暴露服务 -->  <dubbo:protocol name="dubbo" port="20880" />  <!-- 声明需要暴露的服务接口 -->  <dubbo:service interface="com.test.DemoService" ref="demoService" />
</beans>
  • 在springmvc.xml中扫描service注解并将dubbo-provider.xml中的相关的dubbo配置引入进来
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/aop   http://www.springframework.org/schema/aop/spring-aop-4.0.xsd   http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd   http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd   http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"default-autowire="byName"><aop:aspectj-autoproxy /><context:component-scan base-package="com.test" /><import resource="classpath:dubbo-provider.xml" />
</beans>
  • 加载Spring配置,启动服务:
package com.test;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:springmvc.xml");context.start();System.out.println("Dubbo provider start...");try {System.in.read();   // 按任意键退出} catch (IOException e) {e.printStackTrace();} }
}

###4. 服务消费者实现

  • 项目结构
  • 在dubbo-consumer.xml中声明所所需要消费的服务
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans.xsd    http://code.alibabatech.com/schema/dubbo    http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">          <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->    <dubbo:application name="dubbo_consumer" />       <!-- 使用multicast广播注册中心暴露发现服务地址 -->    <dubbo:registry  protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />         <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->    <dubbo:reference id="demoService" interface="com.test.DemoService" />
</beans>
  • 在springmvc.xml中扫描service注解并将dubbo-consumer.xml中的相关的dubbo配置引入进来
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/aop   http://www.springframework.org/schema/aop/spring-aop-4.0.xsd   http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd   http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd   http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"default-autowire="byName"><aop:aspectj-autoproxy /><context:component-scan base-package="com.test" /><import resource="classpath:/dubbo-consumer.xml" />
</beans>
  • 加载Spring配置,调用服务:
package com.test;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "classpath:springmvc.xml" });context.start();DemoService demoService = (DemoService) context.getBean("demoService");System.out.println(demoService.sayHello("哈哈哈"));try {System.in.read();} catch (IOException e) {e.printStackTrace();}}
}
  • 如果出现以下结果则调用成功
  • 通过dubbo-admin管理后台可以看到服务的提供方与消费方
    具体搭建可参考博客:http://blog.csdn.net/jingyangv587/article/details/78904369
    提供方

    消费者

点击下载示例项目(含admin包)
参考博客:https://www.cnblogs.com/Javame/p/3632473.html

想进一步了解dubbo请移步我的另外的dubob相关的文章:https://blog.csdn.net/jingyangV587/article/details/84983770

最简单的dubbo教程-快速入门相关推荐

  1. 最简单的dubbo教程-快速入门《一》

    最简单的dubbo教程-快速入门<一> 目录(?)[+] 所需环境 zookeeper作为dubbo的注册中心,dubbo服务提供方和消费方都需要在zookeeper注册中心注册. 可参考 ...

  2. 最全最简单的dubbo教程

    前言 网上看dubbo相关文章,都是一堆复制粘贴的,有的甚至直接复制官网的变成自己的博客.无奈之下只有自己学习,顺便把学习的结果分享给大家.全部案例均使用最新的springboot的形式,传统mian ...

  3. 高性能RPC框架—----------------------Dubbo一站式快速入门

    https://blog.csdn.net/tangyang8941/article/details/88025412 一.Web应用架构的演变 ​    随着互联网的发展,网站应用的规模不断扩大,W ...

  4. Spring MVC 教程,快速入门,深入分析

    目录  转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...

  5. struts2教程--快速入门

    Struts2框架介绍 1.三大框架 : 是企业主流 JavaEE开发的一套架构 Struts2 + Spring + Hibernate 2. 什么是框架?为什么要学框架 ? 框架 是 实现部分功能 ...

  6. jmeter压测_简单七步,快速入门 JMeter原生压测

    导入本地的 JMeter 原生脚本,即可快速发起一次压测. 前提条件 JMeter 脚本需要在本地调试成功. 请同时上传依赖的 CSV 或者 JAR 文件.CSV 文件的 File Name 只需要文 ...

  7. 简单七步,快速入门 JMeter原生压测

    导入本地的 JMeter 原生脚本,即可快速发起一次压测. 前提条件 JMeter 脚本需要在本地调试成功. 请同时上传依赖的 CSV 或者 JAR 文件.CSV 文件的 File Name 只需要文 ...

  8. Dubbo实战快速入门 (转)

    Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...

  9. 工业机器人入门z50的含义_工业机器人基础教程——快速入门学习

    六轴.水平关节(SCARA).DELTA等不同类型的机器人入门基础教程,学完这些,您将成为一名优秀的机器人应用工程师! 到2020年,工业机器人密度达到每万名员工使用100台以上.我国工业机器人市场将 ...

  10. springmvc教程--快速入门教程

    springmvc教程系列: springmvc史上最好教程(3) springmvc史上最好教程(2) 一. SpringMVC架构 1.1. Spring web mvc介绍 Spring web ...

最新文章

  1. python内置数据结构之dict
  2. 计算器,利用灰度图的顶帽扣出数字
  3. java gettext返回值_012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)...
  4. MSTAR GAMMA
  5. AOGNet:基于深度 AND-OR 语法网络的目标识别方法 | PaperDaily #28
  6. raise errorclass(errno, errval) sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, u
  7. ESP8266代码分析
  8. 这个拖后腿的“in”
  9. android app逆向分析,如何开始对Android应用的逆向分析?
  10. codeUp 2143: 迷瘴 浮点计算|贪心
  11. java 读取大文件内容_java读取大文件
  12. elasticsearch 之index API
  13. [2018.10.24 T3] 老大
  14. ati自定义分辨率_在Windows 10上设置自定义分辨率 | MOS86
  15. ESP8266 WIFI模块
  16. 【双拼】双拼输入法入门指南
  17. 国企“造船”转行测试,成功拿下11K,如今谁又甘心平庸呢?
  18. 测试服务器端口是否打开的几种办法
  19. matlab画图命令fplot,matlab绘图方法fplot
  20. 【kubernetes】coredns报错

热门文章

  1. win10应用商店无法安装
  2. 1909升级卡64_Win10专业版下载_1909 版64位(2019年11月更新)
  3. windows android装应用,以IT之家为例,Win10 Mobile安装安卓APK应用体验如何?
  4. 分治——线性时间选择算法
  5. 计算机老师教育叙事,信息技术教育叙事范文10篇 初中
  6. bt5 mysql字典,backtrack5下载
  7. 计算机操作系统--思维导图
  8. (PC+WAP)高等院校学院职业学校类网站源码 政府单位机构协会Pbootcms网站模板
  9. VB.NET异形窗体
  10. 小米 android 7.0下载地址,小米5安卓7.0公测版固件下载地址 仅限开发版