SpringBoot实现连接nacos并支持多环境部署

 更新时间:2024年06月03日 16:37:12   作者:bobzhouwei888  
这篇文章主要介绍了SpringBoot实现连接nacos并支持多环境部署方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

nacos安装

官网有很详细的步骤,这里不再赘述:https://nacos.io/zh-cn/docs/quick-start.html

nacos服务配置基本步骤

  • 下载jar包或同步代码后编译jar包
  • 生成MySql数据库表 (MySql脚本在:config目录里的nacos-mysql.sql)
  • 重置nacos默认用户的密码,用下面方式取得密码的加密串,更新数据表里的密码
String password = new BCryptPasswordEncoder().encode("你的密码");

SpringBoot客户端读取nacos的配置

  • pom引用:
 <dependency>
	<groupId>com.alibaba.boot</groupId>
	<artifactId>nacos-config-spring-boot-starter</artifactId>
	<version>0.2.1</version>
</dependency>
  • 配置nacos服务地址

在配置文件中配置nacos服务的地址

nacos:
  config:
    server-addr: 10.10.1.111:8848
  • 获取public空间下的默认group的某个dataId的某个属性值

nacos默认创建了一个“public”的命名空间,创建的dataId在默认名为“DEFAULT_GROUP”的group下。

获取默认环境下的新建的例如叫"myfirstconfig"这个dataId的配置的方法如下:

@NacosPropertySource(dataId = "myfirstconfig", autoRefreshed = true)
public class NacosMyFirstConfig {
    @NacosValue(value = "${ExpireSeconds:30}", autoRefreshed = true)
    private int expireSeconds;

假设"myfirstconfig"这个dataId中有个属性名为ExpireSeconds,获取这个属性名的值的方法如上,ExpireSeconds冒号后面的值为默认值,当获取不到nacos对应的属性名时使用的默认值。

autoRefreshed = true则表示nacos server上这个属性值一旦变化,客户端就能获取到新的变化后的值。

  • 你可以新建新的namespace命名空间和新的group名,接下来多环境的部署就要用到不同的namespace

SpringBoot客户端多环境使用nacos

我们的程序一般会有开发环境、测试环境、生产环境,或者测试和生成之间有堡垒环境,一套java代码是通过指定 spring.profiles.active以及对应的application-xxx.yml来控制不同环境及其配置的。

那么怎么让不同的环境,读取到不同的nacos配置值呢?

在nacos上创建不同的namespace

  • nacos上可以创建多个namespace,除了默认的public的namespace,你可以创建dev、test等namespace。新建的namespace会在名称旁边出现一串字符,如6e9c8f46-3e40-41f2-9bf3-50f78c860971,这就是
  • 这个namespac的唯一ID,记下这些唯一ID,接下来有用。

在每个namespace中创建相同名称的一套dataId,里面的属性名也相同,只有属性值不同,都放在默认的“DEFAULT_GROUP”的group下

  • 比如刚才的myfirstconfig这个dataId,在dev和test的namespace下都创建出来,并且里面也都有ExpireSeconds这个属性名,属性值可以不同。

客户端指定不同的namespace

  • 在不同的application-xxx.yml文件中指定不同的namespace
nacos:
  config:
    server-addr: 10.10.1.111:8848
    namespace: 6e9c8f46-3e40-41f2-9bf3-50f78c860971

注意namespace不是填写dev、test这些名称,而是要填写唯一ID串,每个新建的namespace都有一个唯一ID,如上所示。

如果是调用默认的publicnamespace,则不需要指定namespace

这样,你可以发现,不同的环境启动的程序,获取到的是不同的namespace下的属性值,其余地方的代码不需要做任何修改。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于文件合并与修改md5值的问题

    关于文件合并与修改md5值的问题

    这篇文章主要介绍了关于文件合并与修改md5值的问题,使用本博客的方法,不仅仅可以修改md5值,还可以达到隐藏文件的目的,需要的朋友可以参考下
    2023-04-04
  • 使用jvm sandbox对三层嵌套类型的改造示例

    使用jvm sandbox对三层嵌套类型的改造示例

    这篇文章主要为大家介绍了使用jvm sandbox对三层嵌套类型的改造示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Java设计模式之适配器模式详解

    Java设计模式之适配器模式详解

    这篇文章主要介绍了Java设计模式之适配器模式详解,适配器模式将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作,需要的朋友可以参考下
    2023-09-09
  • Java中使用正则表达式获取网页中所有图片的路径

    Java中使用正则表达式获取网页中所有图片的路径

    这篇文章主要介绍了Java中使用正则表达式获取网页中所有图片的路径,本文直接给出实例代码,需要的朋友可以参考下
    2015-06-06
  • SpringBoot配置文件优先级用法及解读

    SpringBoot配置文件优先级用法及解读

    SpringBoot配置优先级按来源排序,15种类型中命令行参数最高,配置文件次之,classpath下config目录的配置优先级高于jar内文件,配置中心如Nacos的配置则插入列表前端,所有配置最终存入Environment的propertySources,通过顺序遍历实现覆盖
    2025-07-07
  • Mac上配置JDK 1.8的超详细流程

    Mac上配置JDK 1.8的超详细流程

    相信每个拿到MAC的小伙伴都是很欣喜的,但是由于MAC系统与WIN系统有着极大的不同,所以使用起来会有一些小困扰,这篇文章主要给大家介绍了关于Mac上配置JDK 1.8的超详细流程,需要的朋友可以参考下
    2023-11-11
  • IDEA在一个项目空间下管理多个项目的操作方法

    IDEA在一个项目空间下管理多个项目的操作方法

    这篇文章主要介绍了IDEA如何在一个项目空间下管理多个项目,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Java读取本地json文件及相应处理方法

    Java读取本地json文件及相应处理方法

    今天小编就为大家分享一篇Java读取本地json文件及相应处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 浅谈Java中注解Annotation的定义、使用、解析

    浅谈Java中注解Annotation的定义、使用、解析

    下面小编就为大家带来一篇浅谈Java中注解Annotation的定义、使用、解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Shiro中session超时页面跳转的处理方式

    Shiro中session超时页面跳转的处理方式

    这篇文章主要介绍了Shiro中session超时页面跳转的处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06

最新评论