theme: channing-cyan
本文正在参加「Java主题月 - Java 开发实战」,详情查看 活动链接
开篇
这是我参与更文挑战的第8天,活动详情查看: 更文挑战
Spring Cloud Netflix已经不流行了,因为它已经不维护更新了,也不是说它不能用,只是有比它更好更新的。那就是Spring Cloud Alibaba系列。下面是Spring Cloud Alibaba的特性描述:
使用的版本: * spring.boot.version:2.5.0 (目前最新) * spring-cloud-alibaba.version:2.2.1.RELEASE (目前最新) * dubbot: 2.7.6 (目前最新3.0.0)
关于项目结构
以上的项目结构就可以理解成是一个微服务项目了,一个父工程中包含了2个子工程。 顾名思义,shop-api中存放的是接口和接口对象
shop-service就是对于接口的实现。
和大多数项目开发的架构一样,没有太多区别。
关于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>
关于配置
具体介绍餐卡: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>
但是想到openFeign比Ribbon更好,所以试了试单独引入,问题解决。(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>
效果
关注+点赞👍收藏❤️不迷路
文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话
各位的支持和认可,就是我创作的最大动力,我们下篇文章见!