SpringBoot3.x集成nacos并实现多环境配置的操作步骤

 更新时间:2024年10月29日 10:43:37   作者:码农、咚咚阳  
本文详细介绍了如何在Springboot3.x中集成Nacos2.x版本,包括nacos的安装、配置更改,以及在集成过程中遇到的问题,如端口设置、依赖版本调整等,文中通过图文介绍的非常详细,需要的朋友可以参考下

一、springboot版本

springboot3.0.x 和springboot3.1.x 可直接使用nacos-config-spring-boot-starter 包。

springboot >=3.2.x 需要使用spring-cloud-starter-alibaba-nacos-config包,因为常规包在我发布该文时nacos官方还没更新,已更新的版本只支持到3.1.x,cloud的包2024年4月份进行了更新,可以支持3.2.x及以上版本。

二、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版本用户,请添加如下依赖

        <!--nacos配置中心-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.3</version>
        </dependency>

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

nacos2.x版本用户,如果你的springboot版本是3.0.x或者3.1.x版本,请添加下面的依赖

        <!--nacos配置中心-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.3.0-RC</version>
        </dependency>

nacos2.x版本用户,如果你的springboot版本是3.2.x及以上,请添加cloud的包

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

2、配置文件中添加nacos配置,以常规包为例,如果是cloud的包,同理参考后面cloud的配置即可。

(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: dev
 
nacos:
  config:
    #是否开启Nacos配置预加载
    bootstrap:
      enable: true
    data-id: demo-boot-v3
    type: yaml
    group: DEFAULT_GROUP
    auto-refresh: true
 
---
#开发环境dev
spring:
  config:
    activate:
      on-profile: dev
nacos:
  config:
    #nacos的地址,替换成测试环境的实际地址即可
    server-addr: 127.0.0.1:8848
    #命名空间,替换为测试环境的实际命名空间即可
    namespace: 0f72f102-23c1-4176-869f-91f31c42a07e    
    bootstrap:
      log:
        enable: true
    #如果开启认证的话需要用户名和密码
    username: nacos
    password: nacos
 
---
#生产环境pro
spring:
  config:
    activate:
      on-profile: pro
nacos:
  config:
    #nacos的地址,替换成线上的实际地址即可
    server-addr: 127.0.0.1:8848
    #命名空间,替换为线上的实际命名空间即可
    namespace: 0f72f102-23c1-4176-869f-91f31c42a07e
    bootstrap:
      log:
        enable: true
    #如果开启认证的话需要用户名和密码
    username: nacos
    password: nacos

(3)spring cloud nacos配置参考

spring:
  profiles:
    active: local
  config:
    import:
      #使用nacos配置 demo-boot-v3对应上面的data-id
      nacos:demo-boot-v3
  cloud:
    nacos:
      config:
        file-extension: yaml
        group: DEFAULT_GROUP
        refresh-enabled: true
 
---
# local
spring:
  config:
    activate:
      on-profile: local
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: 8d582ff3-f890-4a67-b75c-e6c20a86534c
        #如果开启认证的话需要用户名和密码,未开启的话请注释
        username: nacos
        password: nacos
 
---
# dev
spring:
  config:
    activate:
      on-profile: dev
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: 8d582ff3-f890-4a67-b75c-e6c20a86534c
        #如果开启认证的话需要用户名和密码,未开启的话请注释
        username: nacos
        password: nacos
 
---
# pro
spring:
  config:
    activate:
      on-profile: pro
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: 8d582ff3-f890-4a67-b75c-e6c20a86534c
        #如果开启认证的话需要用户名和密码,未开启的话请注释
        username: nacos
        password: nacos

注意这里nacos:demo-boot-v3是一个整体值,中间的冒号后面没有空格,他们的 key是:spring.config.import,demo-boot-v3换成你的data-id即可。

3、启动项目

以上就是SpringBoot3.x集成nacos并实现多环境配置的操作步骤的详细内容,更多关于SpringBoot3.x nacos多环境配置的资料请关注脚本之家其它相关文章!

相关文章

  • Java中BigDecimal除法使用不当导致精度问题

    Java中BigDecimal除法使用不当导致精度问题

    本文主要介绍了Java中BigDecimal除法使用不当导致精度问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • SpringBoot 文件或图片上传与下载功能的实现

    SpringBoot 文件或图片上传与下载功能的实现

    这篇文章主要介绍了SpringBoot 文件或图片上传与下载功能的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • JAVA 添加、修改和删除PDF书签的示例代码

    JAVA 添加、修改和删除PDF书签的示例代码

    这篇文章主要介绍了JAVA 添加、修改和删除PDF书签的示例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 深入聊一聊JDK中的Map和Set

    深入聊一聊JDK中的Map和Set

    这篇文章主要给大家介绍了关于JDK中Map和Set的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家学习或者使用jdk具有一定的参考学习价值,需要的朋友可以参考下
    2022-12-12
  • 利用ssh实现服务器文件上传下载

    利用ssh实现服务器文件上传下载

    这篇文章主要为大家详细介绍了如何利用ssh实现服务器文件上传下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Java ArrayList 实现实例讲解

    Java ArrayList 实现实例讲解

    ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。这篇文章主要介绍了java ArrayList 实现的相关资料,需要的朋友可以参考下
    2016-11-11
  • spring boot 下支付宝的开箱既用环境

    spring boot 下支付宝的开箱既用环境

    这篇文章主要介绍了spring boot 下支付宝的开箱既用环境包括使用场景和使用技巧,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-10-10
  • 解决static类使用@Value获取yml文件获取不到的问题

    解决static类使用@Value获取yml文件获取不到的问题

    在静态类中直接使用@Value注解无法获取yml文件中的配置,解决方案是在工具类Utils中创建静态的setter方法,并从外部类ServiceClass中调用这个方法来设置值,这种方法通过外部调用来间接设置静态变量的值,从而成功读取yml配置
    2024-09-09
  • java线程池详解及代码介绍

    java线程池详解及代码介绍

    这篇文章主要介绍了java中线程池的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 带你了解Java数据结构和算法之前缀,中缀和后缀表达式

    带你了解Java数据结构和算法之前缀,中缀和后缀表达式

    这篇文章主要为大家介绍了Java的前缀,中缀和后缀表达式 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01

最新评论