【Spring Cloud 】进阶之Config配置中心

news2024/11/25 22:49:26

目录

config大致的一个思路:

二,前期准备

2.1导入依赖

2.2编写bootstrop.yml:

三,编写Controller类

3.1获取单个配置类信息

3.2获取多个配置类信息


                                  🎉🎉欢迎来到我的CSDN主页!🎉🎉

                        🏅我是平顶山大师,一个在CSDN分享笔记的博主。📚📚

        🌟推荐给大家我的博客专栏《【SpringCloud】之远程消费(进阶使用)》。🎯🎯

                        🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁
————————————————
版权声明:本文为CSDN博主「平顶山大师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73647713/article/details/135429101

今天我们来聊一聊关于Spring Cloud 中的Config知识

config大致的一个思路:

不同环境不同配置:例如数据源在不同的环境(开发,测试,生产)是不同的,可以通过配置中心 运行期间可以动态调整。例如根据各个微服务的负载状况,动态调整数据源连接池大小或者熔断阀 值,并且调整时不停止微服务(配置修改后可以自动更新)。每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的。

二,前期准备

bootstrap.yml SpringBoot默认支持properties和YAML两种格式的配置文件。 bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使 用来配置application.yml中使用到参数等 application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用 的公共参数等。 bootstrap.yml 先于 application.yml 加载。

2.1导入依赖

        <!--配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--配置类-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

这两个依赖项在 Spring Cloud 中用于支持配置中心功能。

  1. spring-cloud-starter-alibaba-nacos-config 是 Alibaba Nacos 提供的一个 Spring Cloud Starter,用于集成 Nacos 作为配置中心。Nacos 是一个可扩展的动态服务发现、配置和管理平台,它提供了统一的配置管理和动态配置刷新的能力。通过添加该依赖项,可以在应用程序中使用 Nacos 作为配置中心,集中管理应用程序的配置信息,并实时更新应用程序的配置。

  2. spring-cloud-starter-bootstrap 是 Spring Cloud 提供的一个 Starter,用于支持在应用程序启动阶段加载 bootstrap.yml 配置文件。bootstrap.yml 是在 application.yml 文件之前加载的,用于初始化应用程序的一些关键配置。通过添加该依赖项,可以确保在应用程序启动时,bootstrap.yml 中的配置项被正确加载和使用。

综合起来,通过引入这两个依赖项,可以使用 Nacos 作为配置中心,将应用程序的配置集中存储、管理和更新,并在应用程序启动时加载 bootstrap.yml 文件,以确保关键配置项的正确初始化。这样可以提高配置管理的灵活性和可扩展性,使得应用程序可以更方便地适应不同环境和需求。

2.2编写bootstrop.yml:

server:
  port: 8082
spring:
  application:
    name: provider
  cloud:
    nacos:
      server-addr: localhost:8848
      # username: nacos
      # password: nacos
      config:
        prefix: ${spring.application.name} #前缀
        #指定nacos配置中心地址
        server-addr: localhost:8848
        file-extension: yaml # 使用的 nacos 配置集的 dataId 的文件拓展名,同时也是
  #      Nacos 配置集的配置格式,默认为 properties
  #      namespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff # 使用的 nacos 的命名空间,
  #      默认为 null
        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
        # 共享配置集数组
        shared-configs:
          - data-id: redis
            group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
            refresh: true # 是否自动刷新配置,默认为 fals

三,编写Controller类

3.1获取单个配置类信息

弊端:这样写开发效率低下,容易写错

3.2获取多个配置类信息

使用spring注入依赖的方式:

package com.lya.provider;

import com.lya.provider.config.UserProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 微微
 */

@EnableDiscoveryClient
@RestController
@RequestMapping("/user")
@Slf4j

public class ConfigController {

//    使用注解读取到yaml中配置信息
    @Value("${user.name}")
    private String name;
    @Value("${user.info}")
    private String info;

    @Autowired
    private UserProperties userProperties;

    @RequestMapping("/test01")
    public String getbypath() {
        log.info("name:{},info:{}", name,info);
        return "🍗";
    }


    @RequestMapping("/test02")
    public String test02() {
        log.info("userProperties:{}", userProperties);
        return "🍗";
    }

}

启动类上加上

@RefreshScope

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1366332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开源GPT项目 - 在问】让知识无界,智能触手可及

Chatanywhere: chatAnywhere 在问 | 让知识无界&#xff0c;智能触手可及 项目简介 这是一个免费的在线聊天工具&#xff0c;旨在让用户更方便地享受科技带来的便利。用户可以使用我们的工具来获取答案、寻求建议、进行翻译和计算等等。这是由一位个人开发者创建的&#xff…

MyBatisPlus学习一:快速入门

前言 前面快速学习了Mybatis&#xff0c;现在开始快速学习MyBatisPlus 学习教程&#xff1a; 黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 黑马程序员最新MybatisPlus全套视频教程&#xff0c;4小时快速精通mybatis-plus框架 简介 MyBatisPlus 是…

python对常见的激活函数绘图操作(详细代码讲解)

写论文的时候需要做一些激活函数的图像&#xff0c;为此将常见的激活函数进行整理汇总了一下&#xff0c;方便后续的复习 激活函数的作用是为让模型处理非线性问题&#xff0c;故次激活函数都是非线性的 生活中&#xff0c;非线性问题占大多数&#xff0c;而模型的训练通常都是…

Fiddler工具 — 9.命令行和状态栏

1、命令行 命令行在Fiddler的左下方的黑色窗口&#xff0c;也叫QuickExec&#xff0c;可以调用 Fiddler的内置命令。 这一系列内置的函数用于筛选和操作会话列表中的session&#xff08;会话&#xff09;。 虽然它不是很显眼&#xff0c;但用好它&#xff0c;会让你的工作效率…

听GPT 讲Rust源代码--compiler(40)

File: rust/compiler/rustc_borrowck/src/region_infer/mod.rs 文件rust/compiler/rustc_borrowck/src/region_infer/mod.rs是Rust编译器中用于区域推断的模块文件。该文件中定义了一些类型和枚举&#xff0c;用于帮助编译器分析和推断代码中的生命周期和借用关系&#xff0c;以…

【霹雳吧啦】手把手带你入门语义分割の番外13:U2-Net 源码讲解(PyTorch)—— 损失的计算

目录 前言 Preparation 一、U2-Net 网络结构图 二、U2-Net 网络源代码 1、损失计算 2、model.py 3、train_and_eval.py 附&#xff1a;train_and_eval.py 源代码 前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 视频教程&#xff1a;U2-Net 源码讲解&#xff08;PyT…

HTML JavaScript 康威生命游戏

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>康威生命游戏</title><style>body {font-family: Arial, sa…

CompletableFuture超详解与实践

0.背景 一个接口可能需要调用 N 个其他服务的接口&#xff0c;这在项目开发中还是挺常见的。举个例子&#xff1a;用户请求获取订单信息&#xff0c;可能需要调用用户信息、商品详情、物流信息、商品推荐等接口&#xff0c;最后再汇总数据统一返回。 如果是串行&#xff08;按…

SpringBoot项目的三种创建方式

手动创建方式&#xff1a; ①&#xff1a;新建maven项目 ②&#xff1a;引入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.10.RELEASE</version>&l…

近似的同态比较:简单多项式的迭代计算

参考文献&#xff1a; [Gold64] Goldschmidt R E. Applications of division by convergence[D]. Massachusetts Institute of Technology, 1964.[CKKLL19] Cheon J H, Kim D, Kim D, et al. Numerical method for comparison on homomorphically encrypted numbers[C]//Inter…

普通人开视频号小店可以吗?

我是电商珠珠 我做电商也有五六年时间了&#xff0c;天猫、快手、抖店我都做过。 其中做抖店的时间最长&#xff0c;三年的时间&#xff0c;让我从个人化做到了团队化。 在22年的时候&#xff0c;发现了视频号小店这个项目&#xff0c;并开始投入进去。 一开始&#xff0c;…

Flask:模板渲染

本文章只作为个人笔记. 文章目录 前言 一、模板渲染 二、效果 前言 模板渲染 一、模板渲染 from flask import Flask, render_templateapp Flask(__name__)app.route(/) def hello_world():return render_template("index.html")app.route("/blog/<blog_…

java中常见的一些小知识(1)

1.数组转List 1.1. Arrays.asList public class Tesr {public static void main(String[] args) {String[] ary new String[]{ "1", "a"};List<String> list Arrays.asList((ary));list.add("ddsdsa");System.out.println(list);}}但是…

【EI会议征稿通知】第六届信息科学、电气与自动化工程国际学术会议(ISEAE 2024)

第六届信息科学、电气与自动化工程国际学术会议&#xff08;ISEAE 2024&#xff09; 2024 6th International Conference on Information Science, Electrical and Automation Engineering 第六届信息科学、电气与自动化工程国际学术会议&#xff08;ISEAE 2024&#xff09;定…

代码训练营Day.27 | 39. 组合总和、40. 组合总和II、131. 分割回文串

39. 组合总和 1. LeetCode链接 . - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 3. 解法 与其他组合总和题目不同的是&#xff0c;这一次数组中的数字可以重复使用。 回溯&#xff1a; 1. 参数和返回值。参数&#xff1a;数组、遍历起点、目标值。 2. 终止条件。…

Prometheus Blackbox_exporter笔记

一、安装Promtheus 在 Prometheus 官网 Download | Prometheus 获取适用于 Linux 的 Prometheus 安 装包&#xff0c;这里我选择最新的 2.46.0 版本&#xff0c;我是 Linux 系统&#xff0c;选择下载 prometheus-2.46.0.linux-amd64.tar.gz 下载安装包&#xff1a; wget htt…

Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (三)

这个是继上一篇文章 “Elasticsearch&#xff1a;Serarch tutorial - 使用 Python 进行搜索 &#xff08;二&#xff09;” 的续篇。在今天的文章中&#xff0c;本节将向你介绍一种不同的搜索方式&#xff0c;利用机器学习 (ML) 技术来解释含义和上下文。 向量搜索 嵌入 (embed…

【Axure高保真原型】日期天数加减计算器

今天和大家分享日期天数加减计算器的原型模板&#xff0c;我们通过这个模板选择指定日期&#xff0c;然后填写需要增加或者减少的天数&#xff0c;点击确认按钮后&#xff0c;就可以计算出对应的结束日期&#xff0c;本案例提供中继器版的日期选择器&#xff0c;以及JS版的日期…

C++常见的代码操作

1.输出C版本&#xff1a;cout << __cplusplus << endl; #include <iostream>int main() { cout << __cplusplus << endl;system("pause");return 0; } 老版的话会输出199711&#xff0c;支持c11的话会输出201103 注&#xff1a;vis…

java中实现对文件高效的复制

不多说我们直接上代码&#xff1a; 这个是使用NIO包下的FileChannel和ByteBuffer进行文件的操作的&#xff0c;会比较高效。