Dubbo入门 03

整合SpringBoot

  • 创建Maven父工程
  • 服务端
  • 消费端
  • 测试

创建Maven父工程

  1. 工程结构
    Dubbo入门 03_第1张图片
  2. pom文件

<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.0modelVersion>

    <groupId>org.examplegroupId>
    <artifactId>spring-boot-dubboartifactId>
    <packaging>pompackaging>
    <version>1.0-SNAPSHOTversion>
    <modules>
        <module>providermodule>
        <module>consumermodule>
    modules>

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.1.RELEASEversion>
    parent>

    
    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
        <java-version>1.8java-version>
        <curator-framework>4.0.1curator-framework>
        <zookeeper.version>3.4.13zookeeper.version>
        <dubbo.starter.version>0.2.0dubbo.starter.version>
        <junit.version>4.11junit.version>
        <netty.version>4.1.32.Finalnetty.version>
        <curator.version>2.13.0curator.version>
    properties>

    <dependencies>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>com.alibaba.bootgroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>${dubbo.starter.version}version>
        dependency>

        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit.version}version>
            <scope>testscope>
        dependency>
        <dependency>
            <groupId>io.nettygroupId>
            <artifactId>netty-allartifactId>
            <version>${netty.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.curatorgroupId>
            <artifactId>curator-recipesartifactId>
            <version>${curator.version}version>
        dependency>

    dependencies>
project>
  1. 启动zookeeper服务

服务端

  1. 编写一个简单的接口及实现类
public interface ProviderService {

    public String sayHello(String word);
}
import com.alibaba.dubbo.config.annotation.Service;

@Service(version = "2.0.1")
public class ProviderServiceImpl implements ProviderService {
    @Override
    public String sayHello(String word) {
        return "Hello "+word;
    }
}
  1. 启动类
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
// @EnableDubbo  //会扫描所有的包,从中找出dubbo的@Service标注的类
// @DubboComponentScan(basePackages = "com.dubbo.provider.service")  //只扫描指定的包
public class ProviderApp {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class,args);
    }
}
  1. 配置文件
#应用名称
dubbo.application.name=provider
server.port=9001
#注册中心地址
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

#指定dubbo使用的协议、端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

#指定注册到zk上的时间
dubbo.registry.timeout=10000
#指定实现服务的包 @EnableDubbo 注解也一样
dubbo.scan.base-packages=com.dubbo.provider.service

消费端

  1. 引用服务端
<dependencies>
        <dependency>
            <groupId>org.examplegroupId>
            <artifactId>providerartifactId>
            <version>1.0-SNAPSHOTversion>
            <scope>compilescope>
        dependency>
dependencies>
  1. 写一个调用服务的控制层
import com.alibaba.dubbo.config.annotation.Reference;
import com.dubbo.provider.service.ProviderService;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

    @Reference(version = "2.0.1")
    private ProviderService schoolService;

    @RequestMapping("/hello")
    public String sayHello(String word){
        return schoolService.sayHello(word);
    }
}
  1. 启动类
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class,args);
    }
}
  1. 配置文件
#应用名称
dubbo.application.name=consumer
server.port=9002

#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo.registry.port=2181

#协议、端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

#连接zk的超时时间,ms
dubbo.registry.timeout=10000

#启动应用时是否检查注册中心上有没有依赖的服务,默认true
dubbo.consumer.check=false

测试

Dubbo入门 03_第2张图片

你可能感兴趣的:(java,zookeeper,dubbo)