您的位置:首页 > 编程语言 > Java开发

dubbo入门之springboot+dubbo

2018-11-17 22:28 239 查看

1、创建mave项目:

2、修改pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<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.ym</groupId>
    <artifactId>springbootdubbo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>service</module>
        <module>serviceImpl</module>
        <module>testweb</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
        &
5b4
nbsp;   <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.2</version>
        </dependency>
        <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>0.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
   
2d90
         <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.4.6.v20170531</version>
        </dependency>

    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

3、创建远程接口定义模块:

4、创建接口:


5、创建接口实现模块:


6、springboot整合application.yml:

spring:
  application:
    name: dubbo-provider-app
server:
  port: 9090
dubbo:
  scan:
    base-packages: com.ym.service
  application:
    id: dubbo-provider
    name: dubbo-provider
  protocol:
    id: duboo
    name: dubbo
    port: 12345
    status: server #标明是一个server
  registry:
    id: my-reg
    address: zookeeper://192.168.1.224:2181
endpoint:
  dubbo:
    enabled: true
management:
  port: 9091
  health:
    dubbo:
      status:
        extras: load,threadpool
        defaults: memory

7、实现接口:

package com.ym.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.ym.service.TestService;

/**
 * Created with IntelliJ IDEA.
 * User: Dony
 * Date: 2018/11/17
 * Time: 16:04
 * Description:
 */
//@Service此时不再使用这个注解
@Service(version = "1.0",application = "${dubbo.application.id}",protocol = "${dubbo.protocol.id}",registry = "${dubbo.registry.id}") //这个注解时dubbo提供的,其作用是创建此类型的对象,然后作为服务提供者发布
public class TestServiceImpl implements TestService {
    @Override
    public String getData(String name) {
        return "result=" + name;
    }
}

8、创建启动程序:

package ym;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Created with IntelliJ IDEA.
 * User: Dony
 * Date: 2018/11/17
 * Time: 20:34
 * Description:
 */
@SpringBootApplication
public class StartSpringBootMain {
    public static void main(String[] args) {
        SpringApplication.run(StartSpringBootMain.class);
    }
}

观察dubbo控制台:



9、创建消费端:


10、整合springboot和dubbo(application.yml):

spring:
  application:
    name: dubbo-consumer-app
server:
  port: 8080
dubbo:
  application:
    id: dubbo-consumer
    name: dubbo-consumer
  protocol:
    id: duboo
    name: dubbo
    port: 54321
  registry:
    id: my-reg
    address: zookeeper://192.168.1.224:2181

11、创建controller程序,引用远程接口:

package com.ym.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.ym.service.TestService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created with IntelliJ IDEA.
 * User: Dony
 * Date: 2018/11/17
 * Time: 20:58
 * Description:
 */
@RestController
@RequestMapping("/test")
public class TestController {

    //@Autowired 不是使用这个注解,使用dubbo注解引用远程服务
    @Reference(version = "1.0", application = "${dubbo.application.id}")
    private TestService testService;

    @RequestMapping("/getdata/{name}")
    public String getData(@PathVariable("name") String name) {
        return testService.getData(name);
    }
}

12、创建启动程序,并启动项目:

package com.ym;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Created with IntelliJ IDEA.
 * User: Dony
 * Date: 2018/11/17
 * Time: 21:14
 * Description:
 */
@SpringBootApplication(scanBasePackages = "com.ym")
public class StartSpringBootMain {
    public static void main(String[] args) {
        SpringApplication.run(StartSpringBootMain.class);
    }
}

13、观察dubbo控制台:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dubbo 入门