创空工程作为存放路径:
创服务接口:
开发接口模块:maven打jar包形式
然后打jar包
建立消费者和提供者:
加入maven依赖:
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
在服务提供端配置默认配置文件: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时代的配置方法:
可对比一下使用注解的配置方法:
当然别忘了开启自动配置支持:
@EnableDubboConfiguration//开启dubbo自动配置支持
必须要有zookeeper本地或者其他ip的开启都可,刚刚我们配置的是本地的,我们现在去下一个。
https://zookeeper.apache.org/releases.html
点3.6.2的第一个链接进去,然后解压到自己要存放的目录下,配置zookeeper
可参考: https://blog.csdn.net/qq_33316784/article/details/88563482https://blog.csdn.net/nangu0673/article/details/82587014
保存后启动,说个笑话,zookeeper需要java环境别忘了装哈哈
启动项目发现翻车了,说连不上zookeeper
嗯,是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
可参考下面的博客:
创消费者:
配置客户端,和服务端一样,项目创建完成后导入依赖,需要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>
然后还是修改配置文件,然后创建控制器,如下图:
当然还有记得开启dubbo自动配置:
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
# 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
然后启动两个应用,都正常启动后,访问页面,看是否有字符串返回:
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