在学习springboot整合dubbo时,需要创建一些maven工程,结构目录如下:
springboot-dubbo-parent pom类型,定义公共的依赖信息
——springboot-dubbo-public-api-service pom类型,存放公共接口
————springboot-dubbo-api-member-service jar类型,会员服务提供接口
——springboot-dubbo-api-member-service-impl jar类型,会员服务接口的实现
——springboot-dubbo-order-web jar类型,订单项目调用会员项目
注意一定要搞清楚这些工程的层级结构,下面创建工程才能很清楚。
1.创建一个pom类型的maven父工程 springboot-dubbo-parent
生成的目录结构如下:
src目录可以删掉,没什么影响。
在pom文件里添加pom类型
添加依赖:
org.springframework.boot spring-boot-starter-parent 2.0.1.RELEASE UTF-8 UTF-8 1.8 4.0.1 3.4.13 0.2.0 org.springframework.boot spring-boot-starter-web com.alibaba.boot dubbo-spring-boot-starter ${dubbo.starter.version} org.apache.curator curator-framework ${curator-framework.version} org.apache.zookeeper zookeeper ${zookeeper.version} org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
2.创建pom类型的模块springboot-dubbo-public-api-service,此模块位于springboot-dubbo-parent下。
在根项目上点击右键,选择Module
创建maven项目,因为父工程已经引入了springboot依赖,所以所有的子模块直接创建maven项目就可以了。
在pom文件里添加pom类型
在父工程的pom文件中,自动生成了子模块依赖。
parent项目下生成了springboot-dubbo-public-api-service模块
3.创建jar类型的 springboot-dubbo-api-member-service 模块,此模块位于springboot-dubbo-public-api-service下。
依照创建springboot-dubbo-public-api-service工程的步骤一下,在springboot-dubbo-public-api-service工程下创建子模块
springboot-dubbo-api-member-service。
生成的pom文件,不用做任何修改
springboot-dubbo-public-api-service工程的pom文件会自动生成子模块依赖。
生产的项目结构:
4.创建jar类型的 springboot-dubbo-api-member-service-impl 模块,此模块位于springboot-dubbo-parent下。
按照上面的步骤再创建一次springboot-dubbo-api-member-service-impl 模块
注意:在pom文件里添加依赖,依赖的是会员服务的接口模块springboot-dubbo-api-member-service,
而不是公共接口模块springboot-dubbo-public-api-service
5.创建jar类型的 springboot-dubbo-order-web 模块,此模块位于springboot-dubbo-parent下。
按照上面的步骤再创建一次springboot-dubbo-order-web 模块
注意:在pom文件里添加依赖,依赖的也是会员服务的接口模块springboot-dubbo-api-member-service
6.所有的模块都创建成功了,我们看一下项目的结构:
父工程的pom文件中也自动生成了三个子模块的依赖。
总结一下,其实我们说是创建springboot项目,其实并没有使用idea直接创建springboot项目,而是先创建了一个父工程的maven项目,然后在pom文件里添加的让它继承springboot的依赖,自然而然的父工程的所有子模块也是springboot项目了。
我试过先创建maven父工程,然后直接创建springboot子模块,但发现子模块的pom文件里,直接的父依赖是springboot-parent,而不是父工程,所以这种方式不太合适。