在springboot应用中使用dubbo-spring-boot-starter
开篇
dubbo-spring-boot-starter由于比较新,也没有详实的官方资料,网上乱七八糟各种抄袭的教程很多都不靠谱,让我踩了很多很多坑。在这里我将dubbo-spring-boot-starter的使用过程如实记录如下,突出实用,所有代码都经过验证,在github可以找到源码。
一. 项目结构介绍
项目为一个图书管理系统,前端使用vue.js单独建立工程,后台采用maven多模块的形式,父工程下建立子模块,模块名忽略掉前缀分别为controller(控制层),service(服务层),serviceI(服务接口层),dao(数据库操作层)。
controller层作为consumer,service层作为provider
项目结构如图:
这些模块之间具有严格的依赖关系:
- controller只依赖于serviceI
- service只依赖于serviceI和dao
- serviceI和dao对其它模块没有依赖
父工程中引入dubbo-spring-boot-starter,版本为1.0.0。需要注意的是,要区分groupId
<groupId>com.alibaba.boot</groupId>
和
<groupId>com.alibaba.spring.boot</groupId>
这两个包内都有spring-boot-starter-parent,但并不是同一个组件,版本号也完全独立,之间的区别暂时还没研究,我们使用的是后者:
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
父工程的完整pom文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.bocsoft.library</groupId>
<artifactId>library-boot</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>library-boot-controller</module>
<module>library-boot-serviceI</module>
<module>library-boot-service</module>
<module>library-boot-dao</module>
</modules>
<dependencies>
<dependency>
<groupId