创空工程作为存放路径:

如何将spring boot项目注册服务 spring boot注册中心_dubbo


如何将spring boot项目注册服务 spring boot注册中心_zookeeper_02


如何将spring boot项目注册服务 spring boot注册中心_spring_03


创服务接口:

开发接口模块:maven打jar包形式

如何将spring boot项目注册服务 spring boot注册中心_java_04

如何将spring boot项目注册服务 spring boot注册中心_zookeeper_05


如何将spring boot项目注册服务 spring boot注册中心_dubbo_06


如何将spring boot项目注册服务 spring boot注册中心_spring boot_07


如何将spring boot项目注册服务 spring boot注册中心_zookeeper_08


然后打jar包

如何将spring boot项目注册服务 spring boot注册中心_zookeeper_09


建立消费者和提供者:

如何将spring boot项目注册服务 spring boot注册中心_spring boot_10


如何将spring boot项目注册服务 spring boot注册中心_spring boot_11


如何将spring boot项目注册服务 spring boot注册中心_dubbo_12


加入maven依赖:

<dependency>
        <groupId>com.alibaba.spring.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.0.0</version>
    </dependency>

如何将spring boot项目注册服务 spring boot注册中心_java_13


在服务提供端配置默认配置文件:application.properties

# WEB服务器端口
server.port=8080
#Dubbo配置
#需要有,不能少
spring.application.name=dubbo-spring-boot-starter
#表示是提供者,可以省略
spring.dubbo.server=true
#注册中心地址   按实际的填如  zookeeper://192.168.1.11:2181
spring.dubbo.registry=zookeeper://localhost:2181

当然其实我们的依赖还是少的,首先我们服务提供者肯定是需要依赖接口jar包的,其次需要引入zookeeper作为注册中心。所以再像pom中导入依赖,注意服务接口jar版本和你自己创的要一致。

<!--服务接口依赖-->
        <dependency>
            <groupId>com.tho</groupId>
            <artifactId>springboot_dubbo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--zookeeper注册中心依赖-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

在com.tho路径下创建service.impl再创建HelloServiceImpl实现HelloService:

package com.tho.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.tho.service.HelloService;
import org.springframework.stereotype.Component;
//<dubbo:service interface=“com.xxx.XxxService” ref=“xxxService” />    xml的时候的配置方法
@Component//配置spring组件
@Service(interfaceClass = HelloService.class,timeout = 15000)//使用dubbo的注解,配置超时时间,默认0,一般15到20
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHi(String name) {
        return "Hello" +name;
    }
}

xml时代的配置方法:

如何将spring boot项目注册服务 spring boot注册中心_spring_14


可对比一下使用注解的配置方法:

如何将spring boot项目注册服务 spring boot注册中心_spring_15

当然别忘了开启自动配置支持:

如何将spring boot项目注册服务 spring boot注册中心_dubbo_16

@EnableDubboConfiguration//开启dubbo自动配置支持

必须要有zookeeper本地或者其他ip的开启都可,刚刚我们配置的是本地的,我们现在去下一个。

如何将spring boot项目注册服务 spring boot注册中心_java_17

https://zookeeper.apache.org/releases.html

如何将spring boot项目注册服务 spring boot注册中心_java_18


点3.6.2的第一个链接进去,然后解压到自己要存放的目录下,配置zookeeper

可参考: https://blog.csdn.net/qq_33316784/article/details/88563482https://blog.csdn.net/nangu0673/article/details/82587014

如何将spring boot项目注册服务 spring boot注册中心_java_19


保存后启动,说个笑话,zookeeper需要java环境别忘了装哈哈

如何将spring boot项目注册服务 spring boot注册中心_dubbo_20


如何将spring boot项目注册服务 spring boot注册中心_spring_21


启动项目发现翻车了,说连不上zookeeper

如何将spring boot项目注册服务 spring boot注册中心_zookeeper_22


嗯,是zookeeper启动问题,是少开了东西,第二步没做,windows下需要操作如下:

1.启动bin下的zkServer.cmd     
2.然后启动bin下的zkCli.cmd或在cmd下进入D:\zookeeper-3.3.6\bin
执行命令zkCli.cmd -server 127.0.0.1:2181

可参考下面的博客:

创消费者:

如何将spring boot项目注册服务 spring boot注册中心_dubbo_23


如何将spring boot项目注册服务 spring boot注册中心_spring_24


如何将spring boot项目注册服务 spring boot注册中心_spring boot_25


配置客户端,和服务端一样,项目创建完成后导入依赖,需要web环境以及,dubbo,zookeeper,以及提供服务的jar包地址:所以在这个客户端加入依赖

<!--dubbo依赖-->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!--服务接口依赖-->
        <dependency>
            <groupId>com.tho</groupId>
            <artifactId>springboot_dubbo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--zookeeper依赖-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
    </dependencies>

然后还是修改配置文件,然后创建控制器,如下图:

如何将spring boot项目注册服务 spring boot注册中心_spring_26


如何将spring boot项目注册服务 spring boot注册中心_spring_27


当然还有记得开启dubbo自动配置:

如何将spring boot项目注册服务 spring boot注册中心_spring boot_28


ok,上一下代码:

package com.tho.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.tho.service.HelloService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    //调用dubbo远程服务,xml的写法<dubbo:reference id=“xxxService” interface=“com.xxx.XxxService” />
    @Reference
    private HelloService helloService;

    @GetMapping("/boot/hi")
    public String hi(){
        String hi = helloService.sayHi("spring boot and dubbo");
        return hi;
    }
}

消费端配置文件:

server.port=9999
#配置工程项目的名字
spring.application.name=springboot_dubbo_customer
spring.dubbo.registry=zookeeper://127.0.0.1:2181

提供服务配置文件也改一下,改标准的,spring的项目名字使用服务项目名,还有tomcat端口使用9090,以及把地址统一写127.0.0.1:2181

如何将spring boot项目注册服务 spring boot注册中心_spring boot_29

# WEB服务器端口
server.port=9090
#Dubbo配置
#需要有,不能少
spring.application.name=springboot_dubbo_provider
#表示是提供者,可以省略
spring.dubbo.server=true
#注册中心地址   按实际的填如  zookeeper://192.168.1.11:2181
spring.dubbo.registry=zookeeper://127.0.0.1:2181

然后启动两个应用,都正常启动后,访问页面,看是否有字符串返回:

如何将spring boot项目注册服务 spring boot注册中心_java_30


如何将spring boot项目注册服务 spring boot注册中心_spring boot_31


ok整合成功,入门项目完成。

dubbo相关官方文档地址:
https://github.com/alibaba/dubbo-spring-boot-starter
http://dubbo.apache.org/zh-cn/docs/2.7/user/preface/usage/

我们回忆一下步骤
1.首先需要创建三个模块(分别为服务接口,提供服务端,消费者端)
2.接口端编写完成后打成jar包
3.然后服务端和消费端都需要dubbo,zookeeper,spring web,以及接口jar包的依赖。分别配置其配置tomcat端口,各自的文件程序名,编写bubbo的注册配置配上zookeeper注册中心地址
4.编写各自代码,都表示为spring组件,服务端实现接口服务类同时使用dubbo的注解配置@service(接口.class),消费端使用dubbo的@Reference,以及具体控制层代码。
5.在双方的主类上加上自动配置dubbo的注解@EnableDubboConfiguration