SpringCloud Alibaba入门6之Nacos配置

news2024/12/23 5:05:25

一、基本概念

1.命名空间

用于区分环境,开发、测试、生产环境等。

2.配置分组

多个配置文件放在一起,形成组。

3.配置集

一般指一个配置文件

4.配置集ID

这个配置文件全局唯一ID

5.配置项

配置的键值对

 

二、引入Nacos配置中心

我们在用户模块中实现我们的配置中心

1.引入nacos-config依赖

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

2.配置文件

我们新建一个配置文件bootstrap.yml,和SpringCloud Conig类似,我们必需要在 bootstrap.yml配置文件中进行配置,在application.yml中无效,bootstrap.yml优先级高于application.yml,配置如下:

spring:
  application:
    name: user-service #应用名称
  profiles:
    active: dev #当前环境
  cloud:
    nacos:
      config:
        enabled: true  # 如果不想使用 Nacos 进行配置管理,设置为 false 即可
        server-addr: 127.0.0.1:8848 # Nacos Server 地址
        group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
        file-extension: yaml  # 配置内容的数据格式,默认为 properties

3.Nacos Server创建配置

我们在Nocos的配置管理中添加一个配置,Data ID为user-service.yaml,组使用系统默认分组

 4.控制层测试

通过@Value获取配置信息,使用@RefreshScope注解实现配置自动更新

package com.example.myshop.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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @author qx
 * @date 2023/06/23
 * @desc nacos配置测试
 */
@RestController
@RequestMapping("/user")
@RefreshScope
public class NacosConfigController {

    @Value("${project.name:}")
    private String projectName;

    @Value("${project.author:}")
    private String author;


    @GetMapping("/config")
    public Map<String, Object> getConfig() {
        Map<String, Object> configMap = new HashMap<>();
        configMap.put("projectName", projectName);
        configMap.put("projectAuthor", author);
        return configMap;
    }
}

5.测试

启动user模块。

 我们在Nacos控制台修改配置项,并发布。 可以看到控制台打印输出了配置修改的信息

2023-06-23 10:48:52.258  INFO 9436 --- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [project.author]
2023-06-23 10:48:52.258  INFO 9436 --- [-127.0.0.1_8848] c.a.nacos.client.config.impl.CacheData   : [fixed-127.0.0.1_8848] [notify-ok] dataId=user-service.yaml, group=DEFAULT_GROUP, md5=a6172172fee5eccfce73aa3366cf10df, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@a294503 
2023-06-23 10:48:52.258  INFO 9436 --- [-127.0.0.1_8848] c.a.nacos.client.config.impl.CacheData   : [fixed-127.0.0.1_8848] [notify-listener] time cost=717ms in ClientWorker, dataId=user-service.yaml, group=DEFAULT_GROUP, md5=a6172172fee5eccfce73aa3366cf10df, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@a294503 

我们再次访问配置接口:

 我们成功读取到了Nacos配置中心的配置。

三、集中配置

1.新建命名空间

 2.创建数据源配置

我们在刚才新建的命名空间下新建一个配置user-service-dev.yaml

 

 

3.修改项目配置

 指定刚才新建的命名空间名称namespace

spring:
  application:
    name: user-service #应用名称
  profiles:
    active: dev #当前环境
  cloud:
    nacos:
      config:
        enabled: true  # 如果不想使用 Nacos 进行配置管理,设置为 false 即可
        server-addr: 127.0.0.1:8848 # Nacos Server 地址
        group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
        file-extension: yaml  # 配置内容的数据格式,默认为 properties
        namespace: dev_space #指定命名空间 默认为public

并且注销配置文件中的相关数据库配置

spring:
#  datasource:
#    driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://127.0.0.1:3306/myshop?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true
#    username: root
#    password: 123456
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

 4.测试

控制器的示例代码如下:

package com.example.myshop.controller;

import com.example.myshop.common.CommonResult;
import com.example.myshop.entity.User;
import com.example.myshop.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author qx
 * @date 2023/06/21
 * @desc 用户控制层
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 添加用户
     */
    @PostMapping("/add")
    public CommonResult addUser(@RequestBody User user) {
        userService.saveUser(user);
        return CommonResult.success();
    }

    /**
     * 根据id获取用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    @GetMapping("/{id}")
    public CommonResult getUserById(@PathVariable Long id) {
        return CommonResult.success(userService.getUserById(id));
    }


}

我们重新启动项目测试

 获取到了预期的结果,测试了Nacos做为配置中心的功能。

 

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

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

相关文章

探索安卓内容提供者:构建、访问和管理数据【复习】

文章目录 一 ContentProvider1.1 数据模型- **ContentProvider 使用基于数据库模型的简单表格来提供需要共享的数据**&#xff0c;在该表格中&#xff0c;每一表示一条记录&#xff0c;而每一列代表特定类型和含义的数据&#xff0c;并且其中每一条数据记录都包含一个名为“_ID…

团体程序设计天梯赛-练习集L1篇⑤

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

概率论与数理统计教程第五章节笔记

参考书籍&#xff1a;概率论与数理统计教程第三版 茆诗松 程依明 濮晓龙 编著 文章声明&#xff1a;如有错误还望批评指正 文章目录 ξ 5.1 \xi5.1 ξ5.1总体与样本 ξ 5.2 \xi5.2 ξ5.2样本数据的整理与显示Python绘制直方图Python绘制茎叶图 ξ 5.3 \xi5.3 ξ5.3统计量及其分…

非煤电子封条系统 yolov7

非煤电子封条系统通过yolov7python网络模型技术&#xff0c;非煤电子封条系统利用智能化AI视频分析&#xff0c;实时监测分析矿井出入井人员人数变化、非煤及煤矿生产作业状态等情况&#xff0c;自动生成、推送报警信息&#xff0c;提示相关人员采取应急措施。Python是一种由Gu…

最火的几款STM32 F系列对比

最火的几款STM32 F系列对比 最常用且相对热门STM32F103系列STM32F407系列STM32F429系列STM32F746系列 最常用且相对热门 在STM32F系列中&#xff0c;以下是一些最常用且相对热门的芯片&#xff1a; STM32F103系列&#xff1a;这个系列是STM32F系列中最受欢迎的型号之一。它基于…

二进制安装K8S(单Master集群架构)

目录 一、安装K8S1、单Master集群架构2、操作系统初始化配置3、部署docker引擎4、部署 etcd 集群5、部署 Master 组件6、部署 Worker Node 组件7、部署 CNI 网络组件7.1 部署 flannel7.2 Flannel udp 模式的工作原理&#xff08;必备面试题&#xff09;7.3 Flannel vxlan 模式的…

Nexus如何导入jar以及批量导入Maven的本地库目录

前言 本篇基于 Nexus 的版本是 nexus-3.55.0-01本方法适用Linux和WindowsWindows 需要安装Git , 使用Git Bash执行 Nexus上传依赖包的方式 上传依赖包到Nexus 服务器的方式有多种&#xff0c; 包含&#xff1a; 单个jar上传&#xff1a; 在Nexus管理台页面上传单个jar源码编…

springboot高级教程基于 redis 通过注解实现限流

Spring Boot整合Redis有一种方便的方式是使用注解方式实现限流。 可以通过自定义注解的方式来标注需要限流的方法&#xff0c;在方法执行前进行限流的检查。 以下是具体实现方式&#xff1a; 1. 自定义注解RedisLimit&#xff0c;并定义注解元素&#xff0c;如限流的时间、限流…

MIT 6.S081 Lab Four

MIT 6.S081 Lab Four 引言trapsRISC-V assembly (easy)代码解析 Backtrace(moderate)代码解析 Alarm(Hard)test0: invoke handler(调用处理程序)test1/test2(): resume interrupted code(恢复被中断的代码)代码解析issue解答 可选的挑战练习 引言 本文为 MIT 6.S081 2020 操作…

「端午记忆,AI绘梦」微信群AI绘图比赛

点击上方「蓝字」&#xff0c;关注我们 01 活动介绍 亲爱的朋友们&#xff0c; 端午节即将来临&#xff0c;让我们一起用AI唤醒记忆&#xff0c;回忆古老传统的魅力。 这次活动&#xff0c;我们邀请大家进入一个微信群&#xff0c;一起用AI画出你记忆中端午的样子。 无论你是画…

一文通关Spring MVC

目录 &#x1f433;今日良言&#xff1a;少年负壮气&#xff0c;奋烈自有时 &#x1f433;一、Spring MVC的相关介绍 &#x1f415;1.Spring MVC的定义 &#x1f415;2.MVC 和 Spring MVC的关系 &#x1f433;二、Spring MVC的创建及使用 &#x1f42f;1.Spring MVC项目创…

Spring Boot 如何使用 Log4j2 进行日志记录

Spring Boot 如何使用 Log4j2 进行日志记录 在开发 Java 应用程序时&#xff0c;日志记录是非常重要的一环。Spring Boot 提供了多种日志输出方式&#xff0c;其中 Log4j2 是一种比较常用的日志框架。本文将介绍如何在 Spring Boot 应用程序中使用 Log4j2 进行日志记录。 为什…

Verilog基础:标识符的向上向下层次名引用

相关文章 Verilog基础&#xff1a;表达式位宽的确定&#xff08;位宽拓展&#xff09; Verilog基础&#xff1a;表达式符号的确定 Verilog基础&#xff1a;数据类型 Verilog基础&#xff1a;位宽拓展和有符号数运算的联系 Verilog基础&#xff1a;case、casex、ca…

基于阿尔法均值滤波的FPGA图像系统(工程+原理图+PCB+仿真)

目录 前言一、研究背景及意义二、本文研究内容三、硬件系统框架设计1、总框架设计2、原理图&PCB设计3、实物设计4、电路介绍 三、中值滤波算法研究及改进1、图像噪声的产生及危害2、中值滤波算法3、高斯滤波算法4、改进的中值滤波算法&#xff08;α均值滤波算法&#xff0…

【跑实验05】利用CLIP中的图像编码器,如何遍历文件夹中的图像,将图像文件改为28*28的尺寸,然后输出到excel中的每一列,最后一列全都标记为0

文章目录 一、初步实现二、警告信息的解决 一、初步实现 要遍历文件夹中的图像并将其尺寸调整为28x28&#xff0c;并将结果输出到Excel中&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;确保您已经安装了Pandas库&#xff0c;用于处理Excel文件。可以使用…

简单认识Nginx主配置文件及实操模拟

文章目录 一、Nginx主配置文件1、全局配置2、添加 I/O事件配置4.HTTP配置 实操模拟部分一、Nginx虚拟主机配置1.1基于域名1.2.基于IP1.3.基于端口 二、Nginx访问状态统计三、Nginx配置访问控制1.基于授权的访问控制2.基于客户端的访问控制 一、Nginx主配置文件 位置&#xff1…

【机器学习】sklearn数据集的使用,数据集的获取和划分

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 sklearn数据集 二、安装sklearn二、获取数据集三、…

python第三方库概览

目录 第三方库的获取和安装 脚本程序转变为可执行程序的第三方库PyInstaller jieba库(必选)、wordcloud库&#xff08;可选&#xff09; 知识导图&#xff1a; 1.Python第三方库的获取和安装 Python第三方库依照安装方式灵活性和难易程度有三个方法&#xff1a;pip工具安装…

树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项

下面来总结一下远程操控树莓派用到的三种方式及其注意事项&#xff0c;其实这三种方式对于所有的Linux系统来说都是适用的。 目录 一、ssh控制树莓派 1.开启 ssh服务方法一 2.开启 ssh服务方法二 二、VNC远程连接 三、xrdp远程连接 四、其他注意事项 一、ssh控制树莓派 S…

石油化工领域生产作业流程合规检测 yolov8

石油化工领域生产作业流程合规检测通过引入yolov8视觉数据智能分析技术&#xff0c;石油化工领域生产作业流程合规检测对生产作业流程进行实时监测和合规性检测&#xff0c;通过与预设标准进行比对&#xff0c;系统能够检测出不合规的操作或异常情况&#xff0c;并及时发出警报…