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

Nacos分布式配置中心

分布式配置的优势:

不需要重新发布我们的应用

新建父工程:【将它作为跟 所以要把父工程里面的src删掉】

新建子模块:

新建bootstrap.properties:

在使用Nacos作为配置中心时,推荐在bootstrap.properties中配置Nacos相关信息,

而不是在application.properties

原因主要涉及Spring Boot的启动过程和配置加载顺序

1. 优先级高

bootstrap.properties 的加载优先级高于 application.properties

即:它可以在应用启动之前就完成对 Nacos 客户端的配置,确保客户端能够尽早地建立与 Nacos 服务器的连接

2. 非 Spring 管理的配置

bootstrap.properties 中的配置不会被 Spring 应用上下文所管理

即:即使在 Spring 应用上下文尚未完全初始化的情况下,Nacos 客户端也可以通过这些配置正常工作

总结:

application.properties 是为 Spring Boot 服务的,而 Spring Boot 底层用的就是 Spring

一定要在Spring应用启动之前 早一步从nacos那里把相关的配置拿下来

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>cn.jsmart</groupId><artifactId>smart-root</artifactId><version>0.0.1-SNAPSHOT</version></parent><!-- 父的打包方式 --><packaging>pom</packaging><modules><module>nacos-config</module></modules><artifactId>spring-cloud-alibaba-root</artifactId><groupId>com.beiyou</groupId><version>0.0.1-SNAPSHOT</version></project>
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>spring-cloud-alibaba-root</artifactId><groupId>com.beiyou</groupId><version>0.0.1-SNAPSHOT</version><!-- 用来指定关系 --><relativePath>../pom.xml</relativePath></parent><artifactId>nacos-config</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><!-- starter-web 里面自带SpringMVC 不加这个 很多注解就引不进来--><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

spring.application.name = order-servicespring.cloud.nacos.config.server-addr = 192.168.21.17:8848
# 命名空间的配置,若不配置 则默认为public空间   若配置了 就以配置为准
spring.cloud.nacos.config.namespace = public
# 就是 nacos 里的DataId,    如果不配置 就默认使用的是 spring.application.name 的值
spring.cloud.nacos.config.name = order-service
# 配置文件的格式 ,值是properties 则可以省略     若是其他格式 则必须配置
spring.cloud.nacos.config.file-extension = properties
# 配置组  默认是DEFAULT_GROUP
spring.cloud.nacos.config.group = DEFAULT_GROUP
package com.beiyou.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {@Value("${example.first}")private String first;@GetMapping("/test")public String test(){return this.first;}
}

在nacos中 通过哪个注解 可以实现自动更新

【idea启动后请求得到结果1,在nacos中 将结果1修改为结果2 重新发布 ,在idea中 直接请求就能拿到结果2,所以不用再次启动idea了,但若是在配置里 新加配置内容 还是需要重新启动idea的】

通过注解@RefreshScope,即:所谓的热更新

版本迭代的时候 用组(即:可以在同一项目下 有不同的版本号),

但基本上 我们在开发的时候 用的还是DEFAULT_GROUP

.Nacos 与 application.properties 同时配置了同一个key? 谁的优先级高?为什么?

bootstrap.properties 的优先级更高,原因见上述

这种分布式配置的优势?

优势:

① 我们在更改配置的时候 不需要再重新发布了

② 配置变得更灵活了

http://www.lryc.cn/news/440321.html

相关文章:

  • C# WinForm 中 DataGridView 实现单元格cell 能进编辑状态但是不能修改单元格的效果
  • GANs-生成对抗网络
  • e冒泡排序---复杂度O(X^2)
  • C语言--结构体(学习笔记)
  • Vue项目中实现用户登录后跳回原地址
  • 【Google Chrome Windows 64 version及 WebDriver 版本】
  • [ffmpeg] 音视频编码
  • springboot+redis+缓存
  • 关于http的206状态码和416状态码的意义、断点续传以及CORS使用Access-Control-Allow-Origin来允许跨域请求
  • SOMEIP_ETS_114: SD_Entries_Length_wrong_combined
  • SQL:DATEDIFF函数
  • MATLAB 可视化基础:绘图命令与应用
  • 掌握 Python 异常处理的实战技巧:从基础到高级应用20240918
  • One API 部署与配置指南
  • 国密起步7:BouncyCastle使用SM4自定义格式加解密C#版
  • Qt优秀开源项目之二十三:QSimpleUpdater
  • 使用 Nmap 进行 SSL/TLS 加密套件枚举
  • 探索 Python 的火焰:Fire 库的神秘力量
  • 【Day14-单例设计模式动态代理】
  • 代码随想录训练营Day7 | 454.四数相加II | 383. 赎金信 | 15. 三数之和 | 18. 四数之和
  • C++和OpenGL实现3D游戏编程【目录】
  • 03-Mac系统PyCharm主题设置
  • Java并发的四大定律
  • java项目之基于springboot的贸易行业crm系统(源码+文档)
  • General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model
  • 二十种编程语言庆祝中秋节
  • 202409012在飞凌的OK3588-C的核心板上使用Rockchip原厂的Buildroot点MIPI屏【背光篇】
  • DMDRS搭建
  • 【油猴脚本】00006 案例 Tampermonkey油猴脚本自定义表格列名称,自定义表格表头,自定义表格的thead里的td
  • JS - 获取剪切板内容 Clipboard API