关于SpringBoot2.7.6连接nacos遇到的一些问题
作者:一牧.log
这篇文章主要介绍了关于SpringBoot2.7.6连接nacos遇到的一些问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
SpringBoot2.7.6连接nacos的问题
简述:
我遇到的问题是版本不匹配的问题,经搜索查询得出如下结论,最终完成了对nacos的连接。
需要注意的是,我是用springboot子模块进行了nacos连接,其中继承了父工程,关键配置是要对nacos进行修改。
版本选择
<!-- 继承Spring boot工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.6</version>
</parent>
<!-- 此处选择的mysql版本为如下,依赖自己导入 -->
<mysql.version>8.0.12</mysql.version>
<!--SpringBoot2.4.x之后默认不加载bootstrap.yml文件,需要在pom里加上依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!--nacos注册和配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>yml配置
spring:
application:
name: colleges-user
cloud:
nacos:
discovery:
server-addr: 192.168.22.135:8848
enabled: true
config:
server-addr: 192.168.22.135:8848
file-extension: yaml
# 因为springboot 2.4版本以后默认关闭加载bootstrap.yml,所以只能通过此方式连接到nacos config
import: nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
enabled: truespringboot对nacos的使用
一、启动nacos:
① 使用docker安装nacos:
docker pull nacos/nacos-server:2.0.3
② 启动容器(配置8848端口为nacos端口):
docker run --name mynacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:2.0.3
③ 查看是否启动成功:
docker ps
以下代表启动成功:

④启动nacos:
docker exec -it 76c9be91653a /bin/bash#其中76c9be91653a 为nacos的containerID
没有关闭防火墙的可以选择性关闭防火墙:
systemctl stop firewalld
启动成功后,就可以在浏览器访问nacos了:
地址: [服务器ip]:8848/nacos
账号和密码都是nacos
二、配置固定的配置值
① 首先在空间组新建命名空间:

命名空间ID自动生成,复制下来之后yml配置文件中会用到
② 在配置管理的配置列表里面添加配置:

其中,配置内容就是你想要配置的固定值,建议将固定的、不容易被更改的配置放到nacos里;
比如将过期时间设置为1000
三、springboot集成nacos
① 导入jar包:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>其中,nacos的版本需要和springboot版本对应,我用的是:
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
② 新建一个bootstrap.yml配置文件,识别到nacos相关配置:
spring:
cloud:
nacos:
username: nacos
password: nacos
discovery:
namespace: 6024d9fd-2b64-4660-b89b-2932f505527d #我们在nacos中创建的空间名称
group: dev #nacos配置文件所选择的group
server-addr: (服务器ip):8848 #nacos服务地址
config:
namespace: 6024d9fd-2b64-4660-b89b-2932f505527d #我们在nacos中创建的空间名称
timeout: 3000
auto-refresh: true #修改后自动加载
group: dev #nacos配置文件所选择的group
file-extension: yaml #读取nacos配置文件后缀
enable-remote-sync-config: true
refresh-enabled: true
server-addr: (服务器ip):8848 #nacos服务地址③启动类上加上 @EnableDiscoveryClient 注解
使用时: 直接将已经在nacos里配置好的值添加到value注解里即可,像这样:
@Value("${key}")
private Integer key;这样就可以直接获取到111了。
注意需要在使用到这个key的nacos的类上面加上 @RefreshScope 这个注解,如果在nacos配置中刷新了key的值,就可以不用重新启动springboot也能获取到。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
