最新官方版的SpringBoot 整合 Dubbo.md

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 最新官方版的SpringBoot 整合 Dubbo.md

上次的那个springboot和dubbo的整合版本中,dubbo的版本是2.5.3,它的Service注解和事务不能同时使用,会造成扫描失效,2.6.2的dubbo版本已经纠正了此不便,官方也给出了与springboot整合的quick start ,但是又缺少与zk的整合部分,所以我在这里只讲述在dubbo-spring-boot-starter依赖里,需要添加的zk依赖,只拿服务提供者来举例。


1、安装 Zookeeper 环境


Zookeeper 环境搭建&zk命令详解


2、服务提供者实现


大概给下项目架构:


image.png


2.1 导入依赖


<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.1.0</version>
</dependency>


dubbo-spring-boot-starter版本和springboot版本的相关性:


image.png


当然,这只是dubbo的,我们还需要添加 zookeeper的依赖


<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.2</version>
</dependency>


为了方便,我用的springboot data jpa做持久性框架。如果不会jpa,请先看我springboot jpa整合。


2.2 SchoolRepository .java


/**
 * Created by Fant.J.
 */
@Repository
public interface SchoolRepository extends JpaRepository<School,Integer> {
}


2.3 SchoolService.java 略(一个正常的借口)


2.4 实现类SchoolServiceImpl .java核心代码


@Service(version = "2.0.1")
public class SchoolServiceImpl implements SchoolService {
    @Autowired
    private SchoolRepository schoolRepository;


这里的@Service注解是dubbo的注解,不是springframework下的注解。该注解就是向zk注册服务。


2.5 application.properties


# Spring boot application
spring.application.name = user-server
management.port = 9091
# Base packages to scan Dubbo Components (e.g., @Service, @Reference)
# 需要扫描的包
dubbo.scan.basePackages  = com.tyut.user.service
# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = user-server
dubbo.application.name = user-server
## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880
## RegistryConfig Bean
dubbo.registry.id = my-registry
# 这里是zk的连接配置
dubbo.registry.address = zookeeper://47.xxx.2xx.xx:2181


4、服务消费者


为了和服务提供者解耦,我们需要把Service接口类单独拿出来放到client模块里,这里不贴详细代码了。



image.png


4.1 pom.xml


这里略,根据controller类里的需要来填充相关依赖


<dependency>
    <groupId>com.xxxx.school</groupId>
    <artifactId>ip-school-client</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>


4.2 SchoolController


@RestController
@RequestMapping("/sch")
public class SchoolController {
    @Reference(version = "2.0.1")
    private SchoolService schoolService;
    @RequestMapping("/all")
    public ServerResponse getAll(){
        return schoolService.selectAll();
    }
}


注意与@Service注解的version属性值一一对应。


4.3 application.properties


dubbo.scan.basePackages  = com.xxx.web.controller
dubbo.application.id = web-server
dubbo.application.name = web-server
dubbo.protocol.id = web-server
dubbo.protocol.name = web-server
dubbo.consumer.timeout=2000
## RegistryConfig Bean
dubbo.registry.id = web-server
dubbo.registry.address = zookeeper://xxx.xx.xx.xx:2181
dubbo.protocol.port = 20890


成功截图:


image.png


apache 官方文档:

github.com/apache/incubator-dubbo-spring-boot-project



相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
4月前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
4月前
|
Dubbo Java 应用服务中间件
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
78 0
|
4月前
|
Dubbo Java 应用服务中间件
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
110 0
|
4月前
|
Dubbo Java 应用服务中间件
微服务框架(十六)Spring Boot及Dubbo zipkin 链路追踪组件埋点
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文第一部分为调用链、OpenTracing、Zipkin和Jeager的简述;第二部分为Spring Boot及Dubbo zipkin 链路追踪组件埋点
|
4月前
|
JSON Dubbo Java
微服务框架(二十)Dubbo Spring Boot 生产就绪特性
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Dubbo Spring Boot 生产就绪特性
|
4月前
|
Dubbo Java 应用服务中间件
微服务框架(九)Spring Boot 通用Dubbo Parent POM
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为通用Dubbo Maven POM的集成,只需集成Parent POM即可使用
|
1月前
|
Dubbo Java Nacos
【实战攻略】破解Dubbo+Nacos+Spring Boot 3 Native打包后运行异常的终极秘籍——从零开始彻底攻克那些让你头疼不已的技术难题!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但使用Dubbo+Nacos+Spring Boot 3进行GraalVM native打包后常遇运行异常。本文剖析此问题及其解决策略:确认GraalVM版本兼容性;配置反射列表以支持必要类和方法;采用静态代理替代动态代理;检查并调整配置文件;禁用不支持的功能;利用日志和GraalVM诊断工具定位问题;根据诊断结果调整GraalVM配置。通过系统排查方法,能有效解决此类问题,确保服务稳定运行。
52 0
|
3月前
|
Dubbo Java 应用服务中间件
Spring Boot 调用 Dubbo 接口与编写 Dubbo 接口实战
Spring Boot 调用 Dubbo 接口与编写 Dubbo 接口实战
309 1
|
2月前
|
消息中间件 Java 数据库连接
理解java的springboot+mybatisplus+dubbo+nacos+kafka这一套技术栈
理解java的springboot+mybatisplus+dubbo+nacos+kafka这一套技术栈
70 0
|
4月前
|
SQL 监控 Java
nacos常见问题之dubbo+nacos+springboot3的native打包成功后运行出现异常如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
223 2