springboot整合dubbo过程踩了很多坑,现在梳理一个正确的方式:
一. pom配置:dubbo相关的依赖都统一采用alibaba的,并且需要一个nio依赖
分别是:
1. dubbo本身的jar
2. dubbo和springboot整合的jar
3. springboot读取dubbo配置的jar(我在做的时候一直报config读取不到,ben找不到之类的错误,就是因为没有这个jar)
4. nio
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.5</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-starter --> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> <dependency> <groupId>com.alibaba.spring</groupId> <artifactId>spring-context-support</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.32.Final</version> </dependency>
2. 在注册服务的启动类加@EnableDubbo
@EnableDubbo @SpringBootApplication @MapperScan(basePackages="com.csp.test.user.mapper") public class UserServiceApplication { public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } }
Service声明必须是dubbo的:
import com.alibaba.dubbo.config.annotation.Service; @Service public class UserServiceImpl implements UserService { }
3. 配置dubbo连接属性
# dubbo的配置 # dubbo中的服务名称 #spring.dubbo.application=user-service dubbo.application.name=user-service # dubbo的通讯协议名称 dubbo.protocol.name=dubbo #spring.dubbo.protocol.name=dubbo # zookeeper注册中心的地址 dubbo.registry.address=192.168.15.136:2181 # zookeeper的通讯协议的名称 dubbo.registry.protocol=zookeeper # dubbo的服务的扫描路径 dubbo.scan.base-packages=com.csp.imall # 设置超时时间 dubbo.consumer.timeout=600000 # 设置是否检查服务存在 dubbo.consumer.check=false
启动成功后查看dubbo-admin:
注册成功