文章目录
前言
本文对 pringboot 客户端 整合Nacos 过程中出现的版本问题 进行记录;
一、Spring-boot 集成Nacos:
springboot 项目整合nacos 只需要引入两个jar ,config 和 discovery ,本文整合nacos 的jar 包是spring-cloud-starter 下的,所以需要注意下版本的兼容性:
1.1 版本匹配:
方式1:根据官网进行版本选择:
官网地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
如本文使用 2022.0.x 的版本:
方式2:从当前的springboot 版本推导 springcloud 版本,在推导出 cloud nacos 版本:
1) jar 版本判断:
nacos 的jar 包版本 最好和你springboot 的版本进行对应,以减少版本冲突 ,下面为 springboot 版本和 springcloud 的版本对应关系:
官网地址 :https://github.com/spring-cloud/spring-cloud-release/wiki/Supported-Versions#supported-releases
2) 然后找对饮cloud 的nacos config 和discovery版本:找到与 springcloud 的版本相对应的版本:
地址 :https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config
3) 例子:
我的 springboot的依赖 3.0.13:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.13</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
对应的 spring cloud 的版本:2022.0.x
则 在匹配 nacos 版本时,就可以使用 2022.0.x
1.2 对应版本jar 引入:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2022.0.0.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2022.0.0.0</version>
</dependency>
二、项目启动:
如果一切顺利则启动时就可以看到 默认连接到 127.0.0.1:8848 进行注册:
启动如果报错可以可以提示进boot 版本的修改;
三、bootstrap.yml 配置文件问题:
3.1 无法解析bootstrap.yml 问题:
当我们修改 配置中心(cofig) 和服务注册与发现中心(discovery)的 属性:新建bootstrap.yml 增加nacos 参数配置:
spring:
application:
# 应用名称
name: bluegrass-gateway
profiles:
# 生效环境
active: dev
# Nacos 参数配置
cloud:
nacos:
config:
# 配置中心地址
server-addr: nacos 服务的地址:端口
# 配置中心文件后缀
file-extension: yaml
# 配置中心的命名空间id
namespace: 03e54842-c34e-4a6c-a28c-0a55a2e0fb6c
# 配置中心的配置文件分组
group: DEFAULT_GROUP
discovery:
# 服务发现地址
server-addr: nacos 服务的地址:端口
# 注册的地址
ip: 172.28.20.154
# 需要注册到的命名空间
namespace: 81321cc2-df37-4e6a-b4d8-7e7160248f9e
# 注册服务的默认分组
group: DEFAULT_GROUP
启动时 可能会提示:
Description:
No spring.config.import property has been defined
Action:
Add a spring.config.import=nacos: property to your configuration.
If configuration is not required add spring.config.import=optional:nacos: instead.
To disable this check, set spring.cloud.nacos.config.import-check.enabled=false.
Disconnected from the target VM, address: '127.0.0.1:55223', transport: 'socket'
这个是因为从SpringCloud 2020.* 版本把bootstrap禁用了,导致在读取文件的时候读取不到而报错,所以我们只要把bootstrap重新导入进来就会生效了,获取我们直接不使用 bootstrap.yml 进行配置。
3.2 不解析bootstrap.yml 配置:
在application.properties 中增加下面属性后,启动不会去加载 bootstrap.yml 配置文件,从而避免错误
spring.cloud.nacos.config.import-check.enabled=false
3.3 重新导入 bootstrap start:
引入与springboot版本相对应的 spring-cloud-starter-bootstrap
<!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.8</version>
</dependency>
总结
本文对 pringboot 客户端 整合Nacos 过程中出现的版本问题 进行记录;