springboot-gulimall-d7
2023年7月15日大约 2 分钟
上一级页面:springboot-gulimall
前言
这一节引入springboot-cloud-alibaba。然后引入nacos做发现中心,记录在较新版本的springboot版本中需要额外注意的问题
引入springboot-cloud-alibaba
在common模块里引入依赖
<dependencyManagement>
<dependencies>
<!-- spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency> </dependencies></dependencyManagement>
在项目根目录下pom文件指定版本号
<properties>
<spring-cloud.version>2021.0.7</spring-cloud.version>
<spring-cloud-alibaba-dependencies.version>2021.1</spring-cloud-alibaba-dependencies.version>
</properties>
nacos作为发现中心
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
解决nacos和openfeign的依赖冲突
只按照上面的配置可以正常使用nacos中发现中心,但是如果还要引入feign,就可能遇到依赖冲突。
feign有两个可选的依赖。过去feign使用spring-cloud-starter-netflix-ribbon
,这在springboot-cloud-alibaba中自带
但是较新版本的feign已经改为使用spring-cloud-loadbalancer
由于feign的依赖问题,你在运行过程中可能会遇到下面的报错
Did you forget to include spring-cloud-starter-loadbalancer?
解决方法如下,首先在spring-cloud包中排除ribbon
的依赖,然后手动添加loadbalancer
依赖。因为这两个依赖会相互冲突,只保留其中一个
修改common模块的pom.xml
<!-- 注册发现-->
<!-- 在nacos中排除ribbon依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--解决:Did you forget to include spring-cloud-starter-loadbalancer?-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
启动nacos-server
较新版本的nacos默认使用集群模式启动,我们本地开发调试使用standlone 单机模式启动即可,并且单机也无法正常启动集群模式。命令如下
# 去nacos/bin/ 目录下
startup.cmd -m standalone
startup.sh -m standalone