Spring Cloud Alibaba & Dubbo整合|Java 开发实战

本文介绍了如何在Spring Boot 2.5.0和Spring Cloud Alibaba 2.2.1.RELEASE版本下,将Dubbo和Nacos集成到项目中,包括配置详解、问题解决和最终效果展示,适合微服务架构学习者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


theme: channing-cyan

本文正在参加「Java主题月 - Java 开发实战」,详情查看 活动链接

开篇

这是我参与更文挑战的第8天,活动详情查看: 更文挑战

Spring Cloud Netflix已经不流行了,因为它已经不维护更新了,也不是说它不能用,只是有比它更好更新的。那就是Spring Cloud Alibaba系列。下面是Spring Cloud Alibaba的特性描述:

image.png

使用的版本: * spring.boot.version:2.5.0 (目前最新) * spring-cloud-alibaba.version:2.2.1.RELEASE (目前最新) * dubbot: 2.7.6 (目前最新3.0.0)

关于项目结构

image.png 以上的项目结构就可以理解成是一个微服务项目了,一个父工程中包含了2个子工程。 顾名思义,shop-api中存放的是接口和接口对象 image.pngshop-service就是对于接口的实现。 image.png

和大多数项目开发的架构一样,没有太多区别。

关于POM依赖

shop-api 的 pom.xml

没有什么特别的地方,就是需要什么用什么,和本文的Spring Cloud Alibaba & Dubbo整合主题无关。 xml <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.dove.jls</groupId> <artifactId>dove-common</artifactId> </dependency> <!--swagger api doc--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> </dependency> <!--swagger api doc--> <!--参考 https://blog.csdn.net/w57685321/article/details/106783433/--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> </dependencies>

shop-service 的 pom.xml

在shop-service中引入如下依赖,具有了dubbo和nacos相关的功能。 xml <!--整合spring cloud alibaba dubbo --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> <!--整合spring cloud alibaba nacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <exclusions> <!-- 解决 AnnotationConfigApplicationContext already exit--> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </exclusion> </exclusions> </dependency> 这里没有明确版本号,是因为在父工程的pom.xml有相关定义 xml <dependencyManagement> <dependencies> <!--spring-cloud-alibaba 相关的依赖pom--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--spring-boot 相关的依赖pom--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> image.png

关于配置

具体介绍餐卡:dubbo配置参考手册 ```properties

解决Invalid name=“org.apache.dubbo.config.ApplicationConfig#0“

dubbo.application.id=shop-service dubbo.application.name=shop-service dubbo.registry.address=nacos://localhost:8848 dubbo.protocol.name=dubbo dubbo.protocol.port=20881 dubbo.protocol.dispatcher=all dubbo.protocol.threadpool=fixed dubbo.protocol.threads=10 ```

异常情况

启动的时候报了关于Ribbon错误,想到是和请求相关,如果引入可以解决, xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> image.png 但是想到openFeignRibbon更好,所以试了试单独引入,问题解决。(3.0.3需要springboot版本2.4.x之上) xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>3.0.3</version> </dependency>

效果

image.png

image.png

关注+点赞👍收藏❤️不迷路

文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话
各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋老湿

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值