最近学习springBoot整合dubbo过程中遇到了一些问题,在此记录一下,以作备忘。
至于整合教程网上一堆,这里不做重复搬运。
大概描述一下步骤:
- 如果使用zookeeper作为注册中心,需要先安装zookeeper并启动
- 下载dubbo管理控制台(我在网上找的一个,提取码:ddoc),下载后解压,
- 修改dubbo-admin项目中application.properties文件中dubbo.registry.address地址后使用maven打包,
4. 进入target目录下使用java -jar XXX.jar执行jar包,然后访问"http://localhost:7001/"用户名:root,密码:root。即可。如下图:
4. 然后新建springBoot项目即可开始整合了。
问题
在搭建springBoot+dubbo项目过程中:
- pom.xml文件中导什么包?
- application.properties需要配置什么?
- 需要用到哪些注解?
首先pom.xml中需要导什么包,这个我在网上遇到了三种包,分别是:
第一种:
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
第二种:
com.alibaba.spring.boot
dubbo-spring-boot-starter
2.0.0
第三种:
io.dubbo.springboot
spring-boot-starter-dubbo
1.0.0
区别还未知。除此之外还需要导入zookeeper客户端包
<!-- zookeeper客户端 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.7</version>
</dependency>
接下来看三种类别的包对应application.properties中需要怎么配置:
第一种:
服务端:
#当前服务/应用的名字
dubbo.application.name=service-provider
#注册中心的协议和地址
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper服务地址:2181
#通信规则(通信协议和接口)
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
消费端:
dubbo.application.name=service-consumer
dubbo.registry.address=zookeeper://zookeeper服务地址:2181
第二种:
服务端:
#dubbo应用名称
spring.dubbo.application.name=service-provider
#注册中心的协议和地址
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=zookeeper服务地址:2181
#通信规则(通信协议和接口)
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
#开启包扫描,可替代 @EnableDubbo 注解
spring.dubbo.scan.base-packages=com.example.demo.service.serviceImpl
消费端:
spring.application.name=service-consumer
spring.dubbo.registry=zookeeper://zookeeper服务地址:2181
第三种未测试,暂不做记录,后边有时间补上。
最后
注解用的有dubbo的
@service标注服务端服务接口
示例(@Component注解网上说要加,但亲测去掉没什么影响):
@Reference标注消费端消费接口
示例(需注意消费端同样要编写服务端提供的接口,但不用实现):
最最最后就是在启动类中加的一个注解:
如果是导入的第一种包:
在启动类加:@EnableDubbo
作用:
@EnableDubbo是 @EnableDubboConfig 和 @DubboComponentScan两者组合的便捷表达方式。与注解驱动相关的是 @DubboComponentScan。
通过 @EnableDubbo 可以在指定的包名下(通过 scanBasePackages),或者指定的类中(通过 scanBasePackageClasses)扫描 Dubbo 的服务提供者(以 @Service 标注)以及 Dubbo 的服务消费者(以 Reference 标注)。
示例:
注:可以在配置文件中使用dubbo.scan.base-package来替代@EnableDubbo
消费端不加此注解经测试没影响
如果导入的是第二种包:
需在启动类中加:@EnableDubboConfiguration(服务端-消费端一样)
第三种未测试,暂不做记录。
以上就是我在整合springBoot,Dubbo时的一些经历,本文除了作为记录以外,还有一个重要事项是想请看到此文的大佬给讲解一下三种包的区别,如果有知道的还望讲解一下,在此先谢过。
结束!