首页 > 其他分享 >SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新

SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新

时间:2023-03-24 15:04:12浏览次数:69  
标签:配置文件 spring 配置 Nacos SpringCloudAlibaba nacos config cloud


场景

SpringCloudConfig分布式配置中心介绍与搭建使用以及ConfigClient实现动态刷新配置:

在上面实现ConfigClient动态刷新的机制下,是通过post接口调用ConfigClient的方式去进行动态

刷新配置。下面使用Nacos实现配置中心并实现配置动态刷新。

SpringCloudAlibaba中使用Nacos实现服务注册与发现(从实例入手):

在上面实现Nacos作为服务注册中心的基础上,怎样使用Nacos作为配置中心。

注:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、新建子模块cloudalibaba-config-nacos-client3377模块

修改其pom文件,添加nacos-config的依赖

<!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

除此之外还需要添加服务发现以及web的相关依赖

<?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>SpringCloudDemo</artifactId>
        <groupId>com.badao</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

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

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <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>

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,

拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application。

所以新建bootstrap.yml配置文件来配置ncaos相关的配置

# 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格式的配置

然后再新建application.yml,配置环境是开发、测试、产品

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

新建controller,并添加@RefreshScope注解来支持Nacos的动态刷新功能,并获取配置文件的内容

参考官方说明

package com.badao.springcloudalibabademo.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;
    }
}

新建主启动类并添加注解@EnableDiscoveryClient

package com.badao.springcloudalibabademo;

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);
    }
}

2、启动Nacos,并访问

http://localhost:8848/nacos

点击配置中心,点击加号,新建一个配置文件

SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新_java

 

那么每个服务是怎样找到这个对应的配置文件那?

换句话说,nacos怎样知道你新建的配置文件是属于哪个服务的那?

所以在新建配置文件时会有对应的规则/公式来进行匹配。

比如这里的配置文件的Data ID为nacos-config-client-dev.yaml

SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新_java_02

 

这个命名是根据官方的说明的公式来

https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新_配置文件_03

 

在Nacos Spring Cloud中,dataId的完整格式:

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

prefix:

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

spring.profiles.active :

即为当前环境对应的 profile,详情可以参考 Spring Boot文档。

注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

ile-exetension:

为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。

目前只支持 properties 和 yaml 类型。

修改上面新建配置文件的内容如下

config:
    info: from nacos config center ,nacos-config-client-dev.yaml,version = 1

3、启动上面新建的服务3377,并访问获取配置文件的接口

http://localhost:3377//config/info

SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新_云原生_04

 

修改nacos中配置文件内容,此时再访问该接口,可以看到实现了动态刷新

SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新_java_05

 

标签:配置文件,spring,配置,Nacos,SpringCloudAlibaba,nacos,config,cloud
From: https://blog.51cto.com/BADAOLIUMANGQZ/6147288

相关文章

  • “由于应用程序配置不正确,程序未能启动” 的解决方法
    (1)如果是采用VisualStudio6工具开发的一些软件出现此问题,一种可能的原因是没有安装SP6,错误情况界面图如下:        微软提供了文章:    如何判断是否安装......
  • 使用DHCP配置路由器(网络)
    1.实验拓扑2.路由器里配置命令2.1在第一个路由器里配置ipRouter(config)#intg0/0Router(config-if)#ipadd192.168.1.5255.255.255.0Router(config-if)#noshR......
  • Web Dynpro的配置
    WebDynpro的Basis这块的配置--简单版-给自己做个笔记。如果要启用https需要先给服务器申请证书。然后通过RZ11修改参数启用https。 WebDynpro还需要使用完全合格域......
  • 杂项 邮箱配置
    目录杂项邮箱配置阿里云邮箱qq邮箱杂项邮箱配置工作中经常遇到需要配置邮箱的情景,整理下邮箱的配置方式阿里云邮箱SMTP服务器名称smtp.mxhichina.com,或者smtp.您的......
  • k8s ingress-nginx 使用 snippet 添加自定义配置(例如:安全头)
    比如在有些时候我们需要在server里或者location里添加一些参数,例如添加安全头、包体大小限制、添加跨域配置、添加自定义header、处理响应header等等。遇到这些需求的时......
  • 第六章.Hive组件安装配置
    第六章.Hive组件安装配置1.1.实验目的完成本实验,您应该能够:掌握Hive组件安装配置掌握Hive组件格式化和启动1.2.实验要求熟悉Hive组件安装配置了解Hive组......
  • ip地址配置与NFS服务器搭建
    IP地址设置   重启网卡  查看网络配置信息  安装NFS软件包  启动NFS服务 配置exports文件    客户机测试       Smaba服......
  • SSH免密登录配置
    免密登录命令:1.进入.ssh目录:cd~/.ssh2.生成一对密钥:ssh-keygen-trsa3.发送公钥:ssh-copy-id192.168.xx.xxx4.免密登录测试:ssh192.168.xx.xxx目录一、......
  • macOS下环境变量的配置文件
    macOS下环境变量的配置文件有这些:/etc/paths/etc/profile~/.bash_profile~/.bash_login~/.profile~/.bashrc/etc/profile和/etc/paths是系统级别的配置文件,后......
  • 东用科技与华为防火墙构建IPSec VPN配置指导手册
    IPSecVPN组网拓扑:华为防火墙端配置指导(此处以多数客户使用专线上网形式为例)将专网网线插入防火墙1接口。使用网线连接PC与0接口,登录防火墙web界面:防火墙通过静态I......