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

来源:互联网 发布:俄罗斯域名注册商 编辑:程序博客网 时间:2024/05/16 12:28

所需环境

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{    @Override    public String sayHello(String name) {        // TODO Auto-generated method stub        return 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/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_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/context        http://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/context        http://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();        }    }}
  • 如果出现以下结果则调用成功
    这里写图片描述

完整项目的git地址:https://gitee.com/jingyang3877/dubbo-demo.git

参考博客:https://www.cnblogs.com/Javame/p/3632473.html

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脚模嫩白脚丫图片 嫩白 干白嫩妞网 白嫩萝莉 干白嫩妞 粉嫩虎白女 白嫩妞 白嫩少女 皮肤变白变嫩 母亲白丝嫩脚 147白嫩窝人艺术 白嫩p 虎白女粉嫩 白嫩老婆 白嫩美 干白嫩 白嫩屁股 白嫩大学生 白切鸡怎样做才嫩滑好吃 后入白嫩 白嫩脚丫 白嫩美腿 白嫩学生 超嫩萝莉厕所白慰照片 嫩沟乳荡捆水叫白插 白嫩馒头 手粗糙3分钟变嫩变白方法 爸爸顶入儿子浓密白嫩 20岁女孩皮肤又嫩又白 嫩绿 嫩绿的拼音 嫩绿拼音 嫩绿的意思 嫩绿近义词 鲜红嫩绿 嫩绿的 嫩绿的近义词 鲜红嫩绿的意思 怎么嫩肤 做完光子嫩肤毁容图片 逆龄嫩肤