Nacos 之服务配置中心

一、Nacos 作为配置中心-基础配置

1.建立Model

建立一个名为”cloudalibaba-config-nacos-client3377“的Model。

 

 

2.改POM

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud-nacos</artifactId>
        <groupId>com.ckfuture.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-config-nacos-client3377</artifactId>

    <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web+actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

</project>

 

3.建YML

分别建立”application.yml“和”bootstrap.yml“两个配置

application.yml

spring:
  profiles:
    active: dev #表示开发环境

 

bootstrap.yml

# Nacos全局配置
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos 服务注册中心地址
      config:
        server-addr: localhost:8848 #nacos 作为配置中心地址
        file-extension: yaml #指定yaml格式的配置

 

4.主启动类

package com.ckguture.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class,args);
    }
}

5.业务类

package com.ckguture.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope //支持Nacos的动态刷新功能
public class ConfigClientController {
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

6.在Nacos中添加配置信息

Nacos配置管理dataId的完整格式:

${prefix}-${spring.profile.active}.${file-extension}

prefix 默认为spring.application.name 的值,也可通过配置项 spring.cloud.nacos.config.prefix来配置。

spring.profile.active 即为当前环境对应的profile

file-extension 为配置内容的数据格式,目前支持 properties和yml类型。

最终公式:

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

根据公司得到配置dataId为:nacos-config-client-dev.yaml (注意 yaml不是yml)

在Nacos的配置列表中新增配置

 配置内容为:

config:
    info: nacos config center,version = 1

 

 

 

7.测试

启动主启动类

 

 浏览器访问:http://localhost:3377/config/info

8.自带动态刷新

修改Nacos配置内容,接口访问跟着刷新。

 

 

 

 再次访问:

 二 Nacos作为配置中心-分类配置

NameSpace+Group+DataID

指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置

建立"nacos-config-client-test.yaml"

 配置内容:

config: 
    info: nacos config center,nacos-config-client-test.yaml version = 2

 

 修改3377配置

 

 

启动并测试

 

 

 现在两个配置(dev和test都默认在public中)。

 

 相同的DataID在不同的GROUP中,程序中怎样区别;

 

在bootstrap.yml中增加默认group组名。

 

# Nacos全局配置
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos 服务注册中心地址
      config:
        server-addr: localhost:8848 #nacos 作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: TEST_GROUP
        #${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
        #nacos-config-client-dev.yaml

 

新建两个命名空间“dev”和“test”

 

 将命名空间ID写入代码的配置文件中(以“dev”命名空间为例)

 

 

# Nacos全局配置
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos 服务注册中心地址
      config:
        server-addr: localhost:8848 #nacos 作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        namespace: 48ac12df-3c55-4e1b-bed2-30d87e6da6c7
        group: DEV_GROUP
        #${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
        #nacos-config-client-dev.yaml

在配置列表中的“dev”中建立配置

 

 

 

 启动运行并测试

 

posted @ 2022-03-10 15:55  创客未来  阅读(346)  评论(0编辑  收藏  举报