小工具知识网

当前位置: 首页 > 行业知识 > springboot3.x集成nacos踩坑,并实现多环境配置

行业知识

springboot3.x集成nacos踩坑,并实现多环境配置

2026-11-10 05:45:26 来源:互联网转载

一、nacos安装部署

nacos1.x安装、操作请查看官方文档Nacos 快速开始 | Nacos

使用nacos1.x版本的用户请忽略【安装部署】后面的内容,直接跳到 二、springboot3.x集成nacos部分。

springboot3.x集成Nacos2.x升级和安装、操作请查看官方文档Nacos 2.0 升级文档 | Nacos,权限配置请参照Authorization | Nacos

nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。

端口与主端口的偏移量描述
98481000客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
98491001服务端gRPC请求服务端端口,用于服务间同步等
7848-1000Jraft请求服务端端口,用于处理服务端间的Raft相关请求

如果存在防火墙或者nginx端口转发问题,需要进行相应的端口暴露配置。如在nginx中,在已经暴露8848(x)的基础上,需要额外暴露9848(x+1000)。9849和7848端口为服务端之间的通信端口,请勿暴露到外部网络环境和客户端测。

二、springboot3.x集成nacos

1、添加依赖

nacos1.x版本用户,请添加如下依赖

                            com.alibaba.boot            nacos-config-spring-boot-starter            0.2.3        

注意,springboot3.x集成该版本启动项目时能从nacos加载配置文件信息,但是通过@NacosValue注解取不到值, 需要把@NacosValue的地方替换为@Value注解,但是这样的话就不能动态刷新配置了,只能重启项目生效,只能是权益之计,想要彻底兼容的话就看nacos官方出不出兼容的nacos1.x版本的包了,不然只能升级到nacos2.x版本。

nacos2.x版本用户,请添加下面的依赖

                            com.alibaba.boot            nacos-config-spring-boot-starter            0.3.0-RC        

2、配置文件中添加nacos配置

(1)单个环境配置
nacos:  config:    #是否开启Nacos配置预加载    bootstrap:      enable: true    data-id: demo-boot-v3    type: yaml    group: DEFAULT_GROUP    auto-refresh: true    server-addr: 127.0.0.1:8848    namespace: 0f72f102-23c1-4176-869f-91f31c42a07e    bootstrap:      log:        enable: true    #如果开启认证的话需要用户名和密码,未开启的话请注释    username: nacos    password: nacos
(2)多环境配置,以开发环境dev和生产环境pro为例
spring:  profiles:    #指定要加载的配置    active: devnacos:  config:    #是否开启Nacos配置预加载    bootstrap:      enable: true    data-id: demo-boot-v3    type: yaml    group: DEFAULT_GROUP    auto-refresh: true---#开发环境devspring:  config:    activate:      on-profile: devnacos:  config:    #nacos的地址,替换成测试环境的实际地址即可    server-addr: 127.0.0.1:8848    #命名空间,替换为测试环境的实际命名空间即可    namespace: 0f72f102-23c1-4176-869f-91f31c42a07e        bootstrap:      log:        enable: true    #如果开启认证的话需要用户名和密码    username: nacos    password: nacos---#生产环境prospring:  config:    activate:      on-profile: pronacos:  config:    #nacos的地址,替换成线上的实际地址即可    server-addr: 127.0.0.1:8848    #命名空间,替换为线上的实际命名空间即可    namespace: 0f72f102-23c1-4176-869f-91f31c42a07e    bootstrap:      log:        enable: true    #如果开启认证的话需要用户名和密码    username: nacos    password: nacos

3、启动项目,踩坑

完成前面的工作之后,正常情况下nacos的集成就算成功了,如果你的项目能启动成功,请忽略后面的内容。如果你的项目报如下错误,请继续!

java.lang.NoSuchMethodError: org.yaml.snakeyaml.constructor.SafeConstructor: method 'void ()' not found

自动集成的org.yaml.snakeyaml依赖包中SafeConstructor类里面的init方法不存在,于是尝试替换该依赖包,经过多个版本尝试,在pom.xml里面添加如下版本的依赖包进行覆盖后,终于能正常启动了!

                    org.yaml            snakeyaml            1.33        

大功告成!

上一篇:psd怎么做gif?

下一篇:unraid怎么设置打印服务器?