SpringCloud学习-Nacos配置管理

前面了解了Nacos作为服务注册中心,现在了解下,Nacos作为配置管理中心

以前更改配置后,都需要手动重启工程才行,现在只需要搭上 Nacos ,你就可以在Nacos 上保存后,自动更新工程的配置项了

搭建工程(基于上次服务注册的工程)

pom.xml


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>

        <!--nacos依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>
        <!--nacos 配置中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-config</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

bootstrap.yml

网上找的解释词:
创建配置文件名为bootstrap.yml,一定是bootstrap.xxx
原因:
Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的
bootstrap优先级高于application

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        prefix: nacos-config
  profiles:
    active:

application.yml

server:
  port: 8860

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    
nacos:
  cofing:
    name : nacosconfig
    function: study

创建Controller

需要@RefreshScope进行标记,表示 当前类下的配置支持动态更新


@RestController
@RefreshScope
public class ConfigController {

    @Value("${nacos.cofing.name}")
    private String name;

    @Value("${nacos.cofing.function}")
    private String book;

    @GetMapping("/name")
    public String getName() {

        return name;
    }

    @GetMapping("/function")
    public String getFunction() {

        return book;
    }
}

在Nacos上进行配置

新建配置

Data ID的规则:

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

-- `prefix` 默认为 `spring.application.name` 的值,也可以通过配置项 `spring.cloud.nacos.config.prefix`来配置
-- `spring.profile.active` 即为当前环境对应的 profile,详情可以参考 [Spring Boot文档](`https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html#boot-features-profiles`)。 **注意:当 `spring.profile.active` 为空时,对应的连接符 `-` 也将不存在,dataId 的拼接格式变成 `${prefix}.${file-extension}`
-- `file-exetension` 为配置内容的数据格式,可以通过配置项 `spring.cloud.nacos.config.file-extension` 来配置。目前只支持 `properties` 和 `yaml` 类型

我这里命名为: nacos-config.yaml

bootstrap.yml
dataIdPrefix

这里可以解释 Data ID的规则里 prefix 的 释义

构造dataId

dataId是由 dataIdPrefix + "." + fileExtension 构造而成

通过dataId从Nacos上获取配置服务

通过跟踪代码,我们可以发现
Nacos 是通过 dataId 也就是 dataIdPrefix + "." + fileExtension来获取的Nacos上的配置信息

编写Nacos上的配置信息

Nacos上的配置信息

编写好后点发布就ok了

启动工程

访问:http://localhost:8860/function
发现已经是Nacos上的配置信息了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容