java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot连接nacos并支持多环境部署

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

作者:bobzhouwei888

这篇文章主要介绍了SpringBoot实现连接nacos并支持多环境部署方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

nacos安装

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

nacos服务配置基本步骤

String password = new BCryptPasswordEncoder().encode("你的密码");

SpringBoot客户端读取nacos的配置

 <dependency>
	<groupId>com.alibaba.boot</groupId>
	<artifactId>nacos-config-spring-boot-starter</artifactId>
	<version>0.2.1</version>
</dependency>

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

nacos:
  config:
    server-addr: 10.10.1.111:8848

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上这个属性值一旦变化,客户端就能获取到新的变化后的值。

SpringBoot客户端多环境使用nacos

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

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

在nacos上创建不同的namespace

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

客户端指定不同的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下的属性值,其余地方的代码不需要做任何修改。

总结

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

您可能感兴趣的文章:
阅读全文