现在越来越多的公司开发项目中使用了springboot作为搭建服务的框架,因为springboot集成了一套完整项目所需要的基本的开发工具的jar包,无需再像之前开发一个spring项目中需要引入各种配置,只需要引入简单的几个配置就能达到项目的启动,大大减少了开发周期,使开发越来越便捷,而dubbo是一款国内使用较多的SOA架构开发的中间件,其主要由三个部分组成:生产者,消费者,注册中心。注册中心一般使用的是zookeeper。于是我们从头来捋一捋如何搭建一个springboot+dubbo项目。
首先,使用创建一个springboot项目,我这里使用的是IDEA工具,如果是使用eclipse的同学,大家可以去网上找有很多的搭建springboot项目的博客。
第一步:选择新建project或者module,在界面中选择Spring Initilazr点击next:
第二步:填上项目的基本信息点击next:
第三步:选择在你的项目中需要引入的相关依赖以及springboot的版本,这里我选了2.0.6并勾选web便于测试(当然你可以根据你的需要勾选不同的依赖,很全基本上涵盖了开发过程中所用到的所有插件)点击next编辑器就会帮你自动将项目初始化并下载相关的jar包依赖:
进入项目后我们可以先看看项目结构:
其中DemoApplication是项目的启动类,application.properties是配置文件,项目的一些相关的配置可以写在里面,springboot支持多种配置文件格式,目前比较常用的除了properties配置之外,比较流行的是yml格式的配置文件,这里我就将application.properties文件改成application.yml为配置文件格式,都ok了之后呢我们就可以启动启动类(启动类带有main方法可以直接启动),项目就可以启动了。
第四步:下载安装zookeeper
- 下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载后解压即可,进入D:\apach-zookeeper-3.4.5\bin,
双击zkServer.cmd启动注册中心服务。
双击 zkServer.cmd,发现dos框一闪而过,无法正确启动zookeeper。
右键编辑 zkServer.cmd
在末尾输入pause ,保存退出。
再次运行zkServer.cmd,发现dos命令行窗口静止了。
现在能看到错误提示了,发现提示 JAVA_HOME 没有被正确设置。
此时检查自己的 JAVA_HOME设置情况,发现 JAVA_HOME是正确设置的,那是怎么回事?
右键编辑zkEnv.cmd
在这两处添加双引号,保存退出。
重新运行zkServer.cmd,OK,zkServer正常启动了!
第五步:引入Springboot集成dubbo的依赖以及zookeeper客户端依赖:
<!-- 整合dubbo -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
<!-- zookeeper客户端 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.7</version>
</dependency>
第六步:创建接口及接口实现类:
public interface TestService {
void testDubbo();
}
import com.alibaba.dubbo.config.annotation.Service;
import com.springboot.dubbo.service.TestService;
@Service(version = "1.0.0",timeout = 3000)
public class TestServiceImpl implements TestService{
@Override
public void testDubbo() {
}
}
添加@Service注解,切记注解不是用spring的service注解,是 com.alibaba.dubbo.config.annotation.Service,由阿里提供的dubbo的注解,配上版本号1.0.0说明向zookeeper注册的是版本为1.0.0的TestService接口,超时时长为3000ms等信息。
第七步:添加配置:
server:
port: 8080 #Tomcat端口
spring:
dubbo:
application:
name: springboot-dubbo-demo #应用名
registry:
address: zookeeper://localhost #zookeeper地址
port: 2181 #提供注册的端口
protocol:
name: dubbo
port: 20890 #dubbo服务暴露的端口
scan: com.springboot.dubbo.service.impl #扫描的包名
添加完毕后启动项目,没有异常的话,可以通过dubbo-admin查看接口情况:
这样一个提供者服务就搭建好了。
第八步:搭建消费者服务:
项目创建步骤如上面步骤,引入提供者服务的依赖,需要使用maven install命令将提供者服务依赖安装至本地,或者使用maven deploy命令提交至远程服务器才能正常引入,否则会包依赖包找不到。
添加controller层代码项目整体结构如图:
TestController类中的代码结构使用服务注入时使用dubbo的Reference注解:
@Reference(version = "1.0.0",timeout = 300)
private TestService testService;
spring:
dubbo:
application:
name: springboot-dubbo-demo
registry:
address: zookeeper://localhost
port: 2181
scan: com.springboot.dubbo.test.controller
将配置文件扫描的包改成com.springboot.dubbo.test,然后启动项目
通过阿里的Reference这个注解,就可以将消费者注册到zookeeper上就能实现调用啦。
查看dubbo的服务可以看到一个提供者一个消费者: