当前位置: 首页 > article >正文

Nacos统一配置管理

Nacos

统一配置管理

将一部分配置信息写到Nacos配置文件中,可以统一管理,并且这个文件支持热加载。

新建配置步骤:配置管理 -> 配置列表 -> 新建配置
Data ID(配置文件名id) 命名规范:服务名称-dev(profile运行环境).yaml
Group(分组) :DEFAULT_GROUP

原先后端启动的步骤是:

  1. 项目启动
  2. 读取本地配置application.yml
  3. 创建spring容器
  4. 加载bean

现在要从Nacos中读取配置文件,而次操作必须要在读取本地配置文件之前。
那么获取Nacos地址的配置就要在application.yml之前进行
所以需要建立一个优先级比application.yml优先级更高的配置文件:bootstrap.yml并将Nacos地址的配置信息写进去。

操作
第一步:引入Nacos的配置管理客户端依赖

<!--Nacos 客户端依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--Nacos 配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

第二步:新建bootstrap.yml引导文件,将服务名,nacos地址,环境,等信息写到里面

spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: dev #环境
  cloud:
    nacos:
      server-addr: localhost:8848 # Nacos 地址
      config:
        file-extension: yaml # 文件后缀
      discovery:
        cluster-name: HB # 集群名称

第三步:后端想要获取该配置信息,可以通过@Value("${}")的方式获取

@Value("${pattern.dateformat}")
private String dateformat;
/**
 * 获取当前时间
 * @return
 */
@GetMapping("/now")
public String now(){
    return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}

配置热更新

Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现:

方式一:在@Value注入的变量所在类上添加注解@RefreshScope

@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
    @Value("${pattern.dateformat}")
    private String dateformat;
    /**
     * 获取当前时间
     * @return
     */
    @GetMapping("/now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
}

方式二:新建一个配置类,使用@ConfigurationProperties注解

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
	private String dateformat;
}

注意:

  • 不是所有的配置都适合放到配置中心,维护比较麻烦
  • 建议将一些关键参数,需要运行时调整的参数放到Nacos配置中心,一般都是自定义配置。

http://www.kler.cn/a/521962.html

相关文章:

  • HTML 标题
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.21 索引宗师:布尔索引的七重境界
  • 什么是长短期记忆网络?
  • 能说说MyBatis的工作原理吗?
  • 【Elasticsearch】RestClient操作文档
  • Cross-Resolution知识蒸馏论文学习
  • read+write实现:链表放到文件+文件数据放到链表 的功能
  • 第1章 量子暗网中的血色黎明
  • 17【棋牌游戏到底有没有透视】
  • games101-(3/4)变换
  • 弹性分组环——RPR技术
  • python Fabric在自动化部署中的应用
  • 使用 Python 和 scikit-learn 实现 KNN 分类:以鸢尾花数据集为例
  • 【由浅入深认识Maven】第3部分 maven多模块管理
  • fastadmin中require-form.js的data-favisible控制显示隐藏
  • 基于Flask的哔哩哔哩综合指数UP榜单数据分析系统的设计与实现
  • S4 HANA定义税码(FTXP)
  • 【江苏省乡镇街道边界】面图层shp格式arcgis数据+乡镇名称和编码wgs84无偏移内容测评
  • 基于SpringBoot多数据源解决方案
  • qt.qpa.plugin: Could not find the Qt platform plugin “dxcb“ in ““
  • 算法【01背包】
  • [EAI-023] FAST: Efficient Action Tokenization for Vision-Language-Action Models
  • Microsoft Visual Studio 2022 主题修改(补充)
  • Android13源码下载和编译过程详解
  • [JMCTF 2021]UploadHub
  • 前端版本号管理:理解和应用