Spring Cloud Alibaba Nacos Config 配置管理

144 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

Spring Cloud Nacos Config

Spring Cloud Config 是Spring Cloud生态中的统一配置管理的组件,它为外部化配置提供了服务端和客户端支持。包含Config Server和Config Client 两个部分,而Spring Cloud Alibaba Nacos Config 是Config Server和Client的替代方法。

Nacos Config基本应用

在Spring Cloud 生态下Nacos Config的使用步骤:

  • 创建SpringBoot项目,添加spring-cloud-starter依赖
  • 添加nacosconfig maven依赖

创建bootstrap.properties文件,并在bootstrap.properties中添加Nacos Server的连接地址

配置说明

  • spring.cloud.nacos.config.prefix:在nacos配置中心上的Data ID 的前缀
  • spring.cloud.nacos.config.server-addr:设置nacos配置中心地址

注意点:

以上的配置项需要放在bootstrap.yml文件中,在Spring Boot中有两种以上下搵配置,一种是bootstrap,另外一种是application.bootstrap是应用程序的父上下文,所以bootstrap加载优于application,在加载远程配置之前,需要读取Nacos配置中心的服务地址信息,因此Nacos服务地址等属性配置需要放在bootstrap.yml文件中。

在 Nacos 控制台中创建如下配置文件:

image-20211004190329325.png

在启动类中,读取配置中心的数据。

@SpringBootApplication
@Slf4j
public class SpringCloudNacosConfigApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringCloudNacosConfigApplication.class, args);
        String info = applicationContext.getEnvironment().getProperty("info");
        log.info("info:{}",info);
    }

}

启动项目后控制台输出如下结果,标识配置加载成功。

image-20211004192620376.png

动态更新配置

配置中心必须支持配置的动态更新,在配置中心上修改配置后,应用能感知值的变化。可通过以下改动达到动态更新的实现

@SpringBootApplication
@Slf4j
public class SpringCloudNacosConfigApplication {

    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringCloudNacosConfigApplication.class, args);
        while(true){
        String info = applicationContext.getEnvironment().getProperty("info");
        log.info("info:{}",info);
        Thread.sleep(3000);
        }
    }

}

通过一个while循环不断读取info属性,当info属性发生更新时,控制台输出以下日志,监听到数据更新事件,并输出最新的配置信息。

image-20211004194302049.png