SpringBoot 升级 SpringCloud & 整合 Nacos & 并解决Swagger版本冲突、循环依赖

本文详细介绍了如何将SpringCloud与Nacos进行整合,包括环境和版本配置、Nacos的安装与启动、SpringBoot项目中相关依赖的引入以及配置文件设置。在实施过程中,作者遇到了循环依赖和Swagger版本冲突的问题,并提供了相应的解决方案。文章最后展示了成功运行的配置及启动类。
摘要由CSDN通过智能技术生成

项目环境和版本

  • JDK 1.8.0_281
  • SpringBoot 2.6.5
  • Maven 3.8.1
  • SpringCloud 2021.0.1
  • SpringCloud Alibaba 2021.0.1.0
  • AlibabaNacos-server 2.0.0

SpringBoot项目配置

父Maven依赖引入

<spring-cloud.version>2021.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>

<!-- SpringCloud 微服务 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<!-- SpringCloud Alibaba 微服务 -->
<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>

子Maven依赖引入

<!-- springcloud alibaba nacos config 配置中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<!-- springcloud alibaba nacos discovery 注册中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- springcloud loadbalancer -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

<!-- springcloud bootstrap  -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

Nacos安装

1、使用Git克隆Nacos项目

git clone https://github.com/alibaba/nacos/releases

【下载的慢的话可以建议采用】可直接用gitee国内镜像:

git clone https://gitee.com/mirrors/Nacos?_from=gitee_search  

2、使用Maven编译Nacos安装包

# 进入Nacos文件夹
cd Nacos/
# 构建和安装项目
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
  • -Prelease-nacos: 使用release-nacos Maven配置文件,该文件包含了与Nacos相关的依赖和配置信息。
  • -Dmaven.test.skip=true: 跳过执行测试。这个参数可以加快构建过程,但请注意,跳过测试可能会导致无法发现潜在的问题。
  • clean: 在构建之前清理项目目录。
  • install: 将构建的项目安装到本地Maven仓库。
  • -U: 强制从远程仓库更新依赖。

3、编译好的tar包通过ssh工具上传到服务器

作者服务器用的是 Linux-Ubuntu

4、解压tar包

tar -xvf nacos-server-$version.tar.gz

5、启动

sh startup.sh -m standalone
  • -m standalone 表示单机启动,nacos默认为集群启动。

6、配置数据库

  • 创建数据库、数据表
  • Nacos Config 解压有的sql脚本
  • 在Config里边修改数据源

7、成功

nacos-server启动成功

SpringBoot配置文件

bootstrap.yml配置

spring:
  application:
    name: SpringCloudDemo  # 应用程序名称
  main:
    allow-circular-references: true  # 允许循环引用
  config:
    activate:
      on-profile: prod  # 激活的配置文件
  cloud:
    nacos:
      discovery:
        namespace: xx11c577-f525-4d9e-aac0-bcc73a6d98xx  # Nacos服务发现的命名空间
        server-addr: 127.0.0.1:8848  # Nacos服务发现的服务器地址
      config:
        server-addr: 127.0.0.1:8848  # Nacos配置中心的服务器地址
        file-extension: yml  # 配置文件的扩展名
        prefix: ${spring.application.name}  # 配置文件的前缀
        namespace: xx11c577-f525-4d9e-aac0-bcc73a6d98xx  # Nacos配置中心的命名空间
        group: DEFAULT_GROUP  # 配置文件的分组
        refresh: true  # 刷新配置

启动类增加注释

@SpringBootApplication
@EnableDiscoveryClient
public class SpringBootApplication
{
    SpringApplication.run(RuoYiApplication.class, args);
}

成功

遇到问题

  • 循环依赖
//使用@Lazy 延迟加载
import org.springframework.context.annotation.Lazy;
    @Lazy
    @Autowired
    private Servise service;

解决

  • Swagger版本冲突


    bootstrap.yml中增加 如下
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

加入依赖

<swagger.core.version>1.6.2</swagger.core.version>
<!-- Swagger 依赖配置 -->
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-models</artifactId>
    <version>${swagger.core.version}</version>
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>${swagger.core.version}</version>
</dependency>

解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值