一、介绍
-
github提供了SpringBoot整合dubbo的方案,参考:
https://github.com/apache/incubator-dubbo-spring-boot-project
-
github提供的整合方式在服务提供方和消费方均通过注解内通配符的形式读取dubbo配置项,但实际整合中注解形式的读取方式通配符无法生效,因此本文将提供注解+xml的配置方式整合dubbo。
二、框架搭建
-
引入pom,这里使用zookeeper作为服务注册中心,因此添加zkclient的依赖;
<!-- dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.4</version> </dependency> <!-- zkclient --> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.9</version> </dependency>
-
application.properties配置项
#################dubbo的配置信息#################### #应用名称 dubbo.application.name=miniappconsumer #注册中心类型 dubbo.registry.protocol=zookeeper #注册中心地址 dubbo.registry.address=192.168.30.145:2181 #暴露服务方式 dubbo.protocol.name=dubbo #暴露服务端口 dubbo.protocol.port=17201 #dubbo分组 dubbo.group.name=dev #版本 dubbo.version=1.0.0
-
建立配置文件 spring-dubbo.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="${dubbo.application.name}" /> <!-- 注册中心暴露服务地址 --> <dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}"/> <!-- 开启注解使用 --> <dubbo:annotation package="com.akucun"/> <!-- provider配置 --> <dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}"/> </beans>
三、基础配置
-
建立DubboConfig.java,启用注解引入spring-dubbo.xml配置文件和读取配置项
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; /** * @author xiaojin_wu * @email wuxiaojin258@126.com * @date 2018年1月31日 * @description 开发环境读取dubbo配置项 */ @Configuration @ImportResource({ "classpath:dubbo/spring-dubbo.xml" }) public class DubboConfig { }
四、使用
-
服务提供方provider
服务提供方只需要使用dubbo提供的@Service注解即可实现,但由于@Service注解内的通配符无效,如果无须通过配置项的profile机制管理,可以选择在xml中配置,这样就可以读取配置项了;
<!-- provider提供服务 --> <dubbo:service interface="com.akucun.akucunapi.common.service.ICheckSMSCodeService" ref="checkSMSCodeServiceImpl" group="${dubbo.group.name}" version="${dubbo.version}"/>
-
服务消费方consumer
服务消费方只需要dubbo提供的@Reference注解即可,当然也可以通过xml形式配置,此处不提供xml形式的demo
import com.alibaba.dubbo.config.annotation.Reference; /** dubbo提供的服务,version等配置项同provider保持一致即可 */ @Reference(version = "1.0.0") IRocketMqService mqService;