系列文章目录
一、创建一个父工程项目
这里我们通过
Spring Initializer
来帮我们构建一个spring-dubbo
这个父项目,点击next
这里我们选择
spring boot
的版本为2.3.12
,这里我没有拉下来,所以我后面改成了2.3.2.RELEASE
版本。
由于我们是通过
spring-dubbo
来做父项目,来帮我们做pom
依赖管理,所以我们不需要这些无用目录
二、创建子模块(dubbo-api模块)
这里是和创建父模块一样的流程
这里也同样删除掉多余的文件目录,也删除掉
springboot
的启动类,因为这个模块主要是定义接口,实体,公共资源等,给dubbo
服务调用双方依赖使用。
这里修改
dubbo-api
的pom
文件:
- 让其
parent
指向刚刚创建的父项目
2.修改packaging
方式为pom
这里修改
spring-dubbo
的pom
文件:
- 改变了
packaging
方式为pom
- 增加
modules
,注册了模块工程dubbo-api
创建一个接口定义 ->
DemoService
二、创建子模块(dubbo-provider模块)
这里和前面创建
dubbo-api
的流程一样,创建完后后删除多余的文件,然后修改dubbo-provider
的pom
文件:
- 指定
parent
- 设置打包类型为
jar
- 导入
spring web
环境的依赖包,和dubbo
自动装配的依赖包和接口定义的依赖包
父
pom
中管理的模块增加dubbo-provider
在
dubbo-provider
模块中创建DemoServiceImpl
,实现了DemoService
,并添加@Service
注解,这个@Service
注解是Dubbo提供的,标注了这个是一个Dubbo
服务。
设置
dubbo-provider
的配置文件,设置如下配置:
- 指定应用名称
- 指定协议类型为
dubbo
- 指定协议暴露端口,这里-1表示
dubbo
随机获取端口- 设置注册中心的地址,这里我们用的是
zk
然后在
dubbo-provider
的启动类上面加上@EnableDubbo
注解,表示启用Dubbo
服务。
三、创建子模块(dubbo-consumer模块)
创建流程和
dubbo-provider
一致,只是模块名称不一样,修改pom.xml
也和provider
一致,这里配置文件中除了应用名不一致,其他配置和provider
一致。
这里我们新创建一个Task,然后通过
@Reference
注解引入了DemoService
,这里Task
实现了CommandLineRunner
,SpringBoot
在项目启动后会遍历所有实现CommandLineRunner
的实体类并执行run
方法,在run
方法中方法中我们会不断调用DemoService#sayHello
方法,这里我们像调用本地方法一样调用。。
这里我们首先把
Provider
启动起来,
这里我们启动
consumer
的时候发现端口被占用了,因为我们没有指定端口,默认就是8080,刚刚provider启动就在8080,所以我们给consumer
指定一个端口为8081,然后启动,这里在控制台我们可以发现远程调用成功。
总结
本节讲了Dubbo如何与spring集成,下一章我们会将spring整合dubbo的源码实现。