由于此文章是博主2017年学习时写的文章,项目dubbo版本过低,新项目不应该继续采用此版本。阿里巴巴已经将dubbo重新维护并捐给Apache开源组织,新起了比较新版本的项目整合。学习整合的过程可以继续查阅本片文章,查看和参考源码可参考下面的链接.
https://blog.csdn.net/ThirdFloor/article/details/89712207
此项目是在SpringBoot中整合使用Dubbo,以达到分布式服务项目。Dubbo是Alibaba开源的分布式服务框架,具体不再介绍。本文是对此项目的简单说明解析。
分为三个项目,将service接口、service实现、web层分开。
此项目为service接口层,主要放service接口、实体类、dto、枚举类、异常类等通用类。此项目将打包成jar包在下面两个项目中引用,当然这些是交给maven来处理。
此项目为具体的业务实现,包括具体的业务代码、Mybatis的mapper接口和sql语句。此项目为服务提供者,service会注册为dubbo服务,使用zookeeper进行管理。
此项目和前端打交道,为前端输出数据(单纯考虑rest模式下)。服务的消费者,需要注册为服务消费者,从zookeeper中获取已注册的服务。
主要是service接口和实体对象,其中实体对象一定要实现Serializable接口,不然在注册dubbo服务时会报错。
其次在pom.xml文件中,需要将此项目打包为jar文件,具体配置如下
4.0.0
springboot-dubbo-api
llf
springboot-dubbo-api
1.0-SNAPSHOT
jar
在开发过程中,此项目代码有修改需要更新在maven仓库中,具体操作就是maven install
首先maven依赖,需要注意的时,要将springboot-dubbo-api项目依赖加进来。不然无法实现service接口和使用实体类。
org.springframework.boot
spring-boot-starter-web
io.dubbo.springboot
spring-boot-starter-dubbo
1.0.0
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.0.0
mysql
mysql-connector-java
5.1.38
llf
springboot-dubbo-api
1.0-SNAPSHOT
dubbo配置,由于加入的依赖是spring-boot-starter-dubbo,已经和springboot集成了,所以只需要在application.properties(或者appl.yml)文件中加入配置,如下:
## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.llf.springboot.dubbo
在上面配置中,zookeeper为本地启动的,需要事先安装启动,具体流程不再讲解。scan的包为接口实现的所在的包目录。
注意:在service实现类中加入是@Service注解要是dubbo的Service注解
com.alibaba.dubbo.config.annotation.Service;
如果不想使用spring-boot-starter-dubbo依赖,想使用官方的原生依赖,可使用xml配置dubbo。
然后在启动类Application.java中加入配置
@ImportResource("classpath:provider.xml")
此项目maven依赖和service项目一致
dubbo服务配置,项目要对service服务进行消费,需要进行消费者配置。
# Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=com.llf.springboot.dubbo
注意:在controller进行service注入时需要使用@Reference
com.alibaba.dubbo.config.annotation.Reference
首先确定springboot-dubbo-api项目install到maven仓库
启动本地zookeeper
先启动springboot-dubbo-service项目,再启动springboot-dubbo-web
访问web资源地址,获取数据
https://github.com/phycholee/springboot-dubbo-demo