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

Springboot 实践(15)spring config 配置与运用—自动刷新

        目前,网络上讲解spring config的自动刷新,都是通过git服务站的webhook功能执行“actuator/bus-refresh”服务实现的自动刷新。我们的前文讲解的配置中心,配置中心仓库使用的时本地地址,如下图所示:

        那么,配置中心仓库中的文件被修改后,是如何实现触发“actuator/bus-refresh”服务呢,下面我们详细讲解如何实现。

        我们利用三个工程文件,讲解本地化配置中心,是如何实现配置文件更新后,使用该配置文件参数的工程是如何刷新的,三个工程功能分工详细如下:

  • Springboot-config-server工程,实现配置中心服务器功能,使用http://localhost:8020/mango-config-client.yml方式查询配置中心yml文件
  • Springboot-config-client工程,实现配置中心客户端功能,调用配置中心的yml文件中参数;通过http://localhost:1881/swagger-ui.html访问yml文件配置参数
  • Springboot-config-YMLManager工程,实现配置中心客户端功能,实现配置中心文件的管理,包括查询和修改连个功能。

一、Springboot-config-server工程与Springboot-config-client工程改造

 Springboot-config-server工程与Springboot-config-client工程,在《Springboot 实践(14)spring config 配置与运用--手动刷新》中已经讲解,本文只讲究修改内容,详细如下;

1、pom.xml问价改造

        两个工程中,添加RabbitMQ与运行依赖jar包

    <dependency>

            <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-bus-amqp</artifactId>

        </dependency>

2、yml文件改造

        两个工程中,添加RabbitMQ与运行配置参数

        spring:

          rabbitmq:

             host: 127.0.0.1

             port: 5672

             username: guest

              password: guest

二、新建Springboot-config-YMLManager工程

        1、利用MyEclipse2019新建web project工程,命名为Springboot-config-YMLManager,工程目录建设如下图所示。

        2、pom.xml

        使用jar包如下:

<dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter</artifactId>

         </dependency>

         <dependency>

             <groupId>org.springframework.boot</groupId>

             <artifactId>spring-boot-starter-web</artifactId>

         </dependency>

     <dependency>

             <groupId>org.springframework.cloud</groupId>

             <artifactId>spring-cloud-starter-consul-discovery</artifactId>

    </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-actuator</artifactId>

         </dependency>

         <dependency>

             <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-bus-amqp</artifactId>

         </dependency>

    <!-- spring cloud config 客户端 -->

     <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-config-client</artifactId>

    </dependency>

<!--https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api-->

     <dependency>

         <groupId>javax.servlet</groupId>

         <artifactId>javax.servlet-api</artifactId>

         <version>4.0.1</version>

         <scope>provided</scope>

     </dependency>

     <!-- swagger -->

         <dependency>

             <groupId>io.springfox</groupId>

             <artifactId>springfox-swagger2</artifactId>

             <version>2.9.2</version>

         </dependency>

         <dependency>

         <groupId>io.springfox</groupId>

             <artifactId>springfox-swagger-ui</artifactId>

         <version>2.9.2</version>

         </dependency>     

         <!--页面要用到的框架-->

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-thymeleaf</artifactId>

        </dependency>       

        <dependency>

              <groupId>com.SJL</groupId>

              <artifactId>mango-core</artifactId>

              <version>1.0.0</version>

         </dependency>

3、bootstrap.yml

server:

  port: 2881

  servlet:

    #context-path: /auth

    session:

      cookie:

        name: SESSION_SSO

      timeout: 180000 #注意时间单位是秒;特别注意的地方:如果设置小于60秒的话,则会默认取60*60*10秒! 

spring:

  application:

    name: Springboot-config-YMLManager

  cloud:   

    consul:

      host: 127.0.0.1

      port: 8500

      #discovery:

        #serviceName: ${spring.application.name}

      discovery:

        # 配置服务注册到Consul上

        register: true

        # 配置服务健康检测地址  供Consul 调用

        health-check-path: /actuator/health                       

        #consul 健康检测频率

        health-check-interval: 15s

        # 配置注册到consul 服务的id

        instance-id: ${spring.application.name}

        enabled: true

        service-name: ${spring.application.name}

        #告诉consul我注册的时候你给我按ip注册我地址(对应no such host问题)。

        prefer-ip-address: true

        ip-address: 127.0.0.1

        #ip-address: 172.16.52.14

    config:

      fail-fast: true

      discovery:

        enabled: true  # 开启服务发现

        service-id: Springboot-config-server # 配置中心服务名称

      name: auth-server  # 对应{application}部分

      profile: dev  # 对应{profile}部分   

  rabbitmq:

    host: 127.0.0.1

    port: 5672

    username: guest

    password: guest  

  thymeleaf:

       #缓冲的配置

    cache: false

    check-template: true

    check-template-location: true

      #开启MVC thymeleaf 视图解析

    enabled: true

    encoding: utf-8

    mode: HTML5

    prefix: classpath:/templates/

    suffix: .html

# actuator的配置

management:

  endpoints:

    web:

      exposure:

        include: "*"

  endpoint:

    health:

     show-details: always

4、功能实现简介

        后台java代码主要实现功能如下:

        ☆ 配置中心文件列表读取controller

        ☆ 配置中心文件内容读取controller

        ☆ 配置文件修改后,将修改后内容写入配置文件

        ☆ 配置文件修改后,执行“actuator/bus-refresh”服务(访问“actuator/bus-refresh”节点,触发了一个事件,该事件传播到了其它的节点,其它节点获取事件后,也进行了刷新的效果)

备注:由于配置中心采用本地华配置,所以该工程后台使用了本地路径,不属实,需要部署到配置仓库服务器。

5、页面实现简介

三、测试

1、启动RabbitMQ

2、启动Consul

3、启动Springboot-config-server

4、启动Springboot-config-client

5、启动Springboot-config-YMLManager项目

项目启动后,服务注册软件consul页面如下:

6、通过Springboot-config-YMLManager项目查看修改后参数

☆ 在浏览器中输入http://localhost:2881/mainfunction,进入配置文件列表,如下图所示

☆ 选择“mango-config-client.yml”,进入编辑页面,如下图所示:

☆ 将name: test6,改成name:test7,点击保存,如下所示

☆ 在配置中心服务器端测试文件修改,即在浏览器中输入“http://localhost:8020/mango-config-client.yml”,显示如下:

☆ 在配置中心客户端测试参数修改,即在浏览器中输入http://localhost:1881/swagger-ui.html,进入swagger-ui界面,选择“/configInfo”,显示如下:

服务端和客户端参数都应景自动跟新为test7,项目设计功能都已经实现。

本文讲解到此结束,下文我们一起学习一下nacos配置中心,相信学友们会有新的感悟。

相关文章:

Springboot 实践(15)spring config 配置与运用—自动刷新

目前&#xff0c;网络上讲解spring config的自动刷新&#xff0c;都是通过git服务站的webhook功能执行“actuator/bus-refresh”服务实现的自动刷新。我们的前文讲解的配置中心&#xff0c;配置中心仓库使用的时本地地址&#xff0c;如下图所示&#xff1a; 那么&#xff0c;配…...

FirmAFL

FirmAFL使用并改进了Firmdyne模拟方式&#xff0c;并利用AFL对IoT固件实施高通量灰盒Fuzzing。 一、项目简介 FIRM-AFL 是 第一个针对物联网固件的高吞吐量灰盒模糊测试器。 支持mipsel、mipseb和armel三种CPU架构 &#xff0c;涵盖Firmadyne数据库中90.2%的固件。 FIRM-AFL 解…...

SpringMVC的整合完成CRUD(增删改查)

SpringMVC是一种基于Java的Web框架&#xff0c;它是Spring框架的一部分。SpringMVC通过使用MVC&#xff08;Model-View-Controller&#xff09;设计模式来组织和管理Web应用程序的开发。 在SpringMVC中&#xff0c;Model代表数据模型&#xff0c;View代表用户界面&#xff0c;C…...

Postman使用_Tests Script(断言测试)

断言测试可以在Collection、Folder和Request的 pre-request script 和 test script中编写&#xff0c;测试脚本可以检测请求响应的各个方面&#xff0c;包括正文、状态代码、头、cookie、响应时间等&#xff0c;只有测试符合自定义的要求后才能通过。 pm对象提供了测试相关功能…...

问道管理:华为概念股捷荣技术13天10板,监管质疑迎合热点炒作

捷荣技能&#xff08;002855.SZ&#xff09;一口气将气氛拉满。 盘面看&#xff0c;自8月29日启动到9月14日&#xff0c;捷荣技能用了13天时间&#xff0c;将累计涨幅推到了188%&#xff0c;期间有10个涨停板&#xff0c;如此冷艳之举&#xff0c;还在于其“华为概念”。 ​ …...

VR云游:让游客足不出户享受旅行的乐趣

随着人们的生活水平不断提高&#xff0c;对于旅行的需求也在日益增长&#xff0c;既要玩的舒心&#xff0c;也要享受的舒服&#xff0c;因此VR全景云游就成为了一种新型的旅行方式&#xff0c;人们足不出户就可以沉浸式游览各地自然风光与名胜古迹。 VR云游景区是一种全新的旅游…...

vue3学习源码笔记(小白入门系列)------ 重点!响应式原理 代码逐行分析

目录 备注响应式数据创建ref 和 reactive 核心 作用第一轮的 依赖收集 发生时机setup 阶段 去更改了 响应式数据 会发生依赖收集吗 派发更新派发更新是什么时候 触发的&#xff1f;扩展&#xff1a; setup阶段 响应式数据被修改 会触发组件更新吗 vue 是如何根据派发更新来触发…...

62、SpringBoot 使用RestTemplate 整合第三方 RESTful 服务

这节的要点&#xff1a; 就是弄两个项目 &#xff0c; 从 端口9090 这个项目&#xff0c;通过 restTemplate&#xff0c; 去访问 端口8080 的项目&#xff0c;并获取8080项目的数据。 ★ RESTful服务包含两方面的含义 1. 自己的应用要暴露一些功能供别人来调用。此时我们是服…...

Linux基本认识

一、Linux基本概念 Linux 内核最初只是由芬兰人林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff0c;是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多…...

leetcode top 100 (8)无重复字符的最长子串(滑动窗口

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 package TOP1_10;import java.util.HashMap; import java.…...

我也惊呆了!原来软件开发根本不需要会编码

一、前言 众所周知&#xff0c;完成一个大型的企业级系统&#xff0c;公司往往需要大量的人力做支持后盾&#xff0c;例如需要需求分析师、数据库管理员、前台美工、后台程序员、测试人员等。在快速发展中的企业&#xff0c;尤其是中小企业&#xff0c;都是一个萝卜多个坑&…...

定制化图标——Element UI 组件图标替换指南

本篇博客将介绍如何在使用 Element UI 组件时对原生图标进行定制化替换&#xff0c;提供了适用于满足个性化需求的方法和技巧。 引言 Element UI 是一款基于 Vue.js 的流行 UI 组件库&#xff0c;在前端开发中得到广泛应用。然而&#xff0c;在使用 Element UI 的组件时&#…...

63、SpringBoot---定制 RestTemplate--消息转化器、拦截器

★ 定制RestTemplate 如要对RestTemplate进行自定义设置&#xff0c;Spring Boot也提供了两种主要方式&#xff1a;▲ 局部式&#xff1a;在调用RestTemplateBuilder构建RestTemplate之前&#xff0c;先调用RestTemplateBuilder的方法对其定制&#xff0c;通过这种方式设置的R…...

面试系列 - Redis持久化机制详解

目录 一、Redis 持久化机制 二、混合使用 RDB 和 AOF 三、 RDB(Redis DataBase)详解 四、AOF&#xff08;Append-Only File&#xff09;详解 Redis 是一个内存数据库&#xff0c;为了持久化数据以确保数据不会在服务器重启时丢失&#xff0c;Redis 提供了两种主要的持久化机…...

Ceph入门到精通-存储集群ceph df 用量统计算法说明

3.2.5. Ceph 如何计算数据使用量 used 值反映了使用的实际原始存储量。xxx GB / xxx GB 代表可用的存储&#xff08;其中较小的数字&#xff09;和总存储容量。总容量反映了在复制、克隆或快照前存储数据的大小。因此&#xff0c;实际存储的数据量通常会超过名义上的存储量。这…...

堡垒机的相关介绍

描述 堡垒机&#xff0c;即在一个特定的网络环境下&#xff0c;为了保障网络和数据不受来自外部和内部用户的入侵和破坏&#xff0c;而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为&#xff0c;以便集中报警、及时处理及审…...

无涯教程-JavaScript - INDIRECT函数

描述 INDIRECT函数返回由文本字符串指定的引用。 如果您在Excel公式中键入引用B1,则Excel会理解这引用了单元格B1。但是,Excel无法将文本字符串" B1"理解为引用。因此,如果单元格引用采用文本字符串的形式,则需要使用INDIRECT函数将其转换为实际的单元格引用。 立…...

LiveNVR监控流媒体Onvif/RTSP功能-支持海康摄像头海康NVR通过EHOME协议ISUP协议接入分发视频流或是转GB28181

LiveNVR支持海康NVR摄像头通EHOME接入ISUP接入LiveNVR分发视频流或是转GB28181 1、海康 ISUP 接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例 3、通道配置3.1、直播流接入类型 海康ISUP3.2、海康 ISUP 设备ID3.3、启用保存3.4、接入成功 4、相关…...

一年一度的中秋节马上又要到了,给你的浏览器也来点氛围感吧

说在前面 一年一度的中秋节马上又要到了&#xff0c;给你的浏览器也来点氛围感吧 &#x1f315;&#x1f315;&#x1f315; 插件设计 效果 首先我们应该要先确定一下我们想要实现的效果是怎样的&#xff0c;如上图&#xff0c;我们希望在页面上鼠标点击的时候会在点击区域随…...

CentOS8安装mysql-community-client错误解决

安装MySQL5.7.37的mysql-community-client-5.7.37-1.el7.x86_64.rpm时&#xff0c;提示如下&#xff1a; 提示的意思是缺少依赖软件包。 使用如下命令安装依赖包&#xff1a; yum install libncurse* 实际安装如下两个软件包。 成功后再次安装mysql-community-client-5.7.37…...

故障排除指南:解决 Kibana Discover 加载中的 6 个常见问题

作者&#xff1a;Steffanie Nestor Discover 是 Elastic 的核心 Kibana UI&#xff0c;用于搜索、过滤和检查&#xff08;时间序列&#xff09;数据。 可视化用于数据聚合/摘要。 Discover UI 对于大数据 Elasticsearch 响应具有弹性&#xff0c;但有时会因&#xff08;未压缩的…...

创建一个简单的外卖订餐系统

在今天的快节奏生活中&#xff0c;外卖订餐系统已经成为了人们日常生活中不可或缺的一部分。这些系统通过在线点餐和配送服务&#xff0c;为用户提供了便捷的用餐体验。在本文中&#xff0c;我们将创建一个简单的外卖订餐系统&#xff0c;使用Python和Flask框架构建后端&#x…...

《追逐胜利:编程之路上的三子棋游戏实践》

文章目录 前言一、三子棋游戏规则二、步骤详解1.游戏菜单的实现2.棋盘的实现2.1 初始化棋盘2.2 打印棋盘 3.游戏逻辑实现3.1 玩家下棋3.2 电脑下棋 4.判断输赢4.1 win函数实现 5.完整代码 总结 前言 大家好&#xff01;我是艾老虎尤&#xff01;今天我很高兴来和大家分享我最近…...

身份和访问管理解决方案:混合型IAM

对于依赖于本地 IT 基础结构和传统安全模型的组织&#xff0c;可以更轻松地验证和授权企业网络内的所有内容&#xff0c;包括设备、用户、应用程序和服务器。尝试从公司网络外部获取访问权限的用户使用虚拟专用网络 &#xff08;VPN&#xff09; 和网络访问控制 &#xff08;NA…...

微信小程序动态添加表单模块

先来看看效果&#xff1a; 屏幕录制 2023-09-14 16.33.21 点击添加请假按钮&#xff0c;就会新增一个请假信息表单&#xff1b;点击左上角红色删除按钮&#xff0c;删除当前表单&#xff1b; 源码下载地址&#xff1a;https://download.csdn.net/download/xq30397022/88339822…...

HTML5+CSS3小实例:纯CSS实现彩虹倒映水面的唯美背景

实例:纯CSS实现彩虹倒映水面的唯美背景 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" …...

Beautiful Soup简介

BeautifulSoup是一个Python库&#xff0c;用于从HTML或XML文件中提取数据。它提供了一种简单而直观的方式来遍历、搜索和修改HTML或XML文档的结构。 以下是一些BeautifulSoup的主要功能&#xff1a; 解析器&#xff1a;BeautifulSoup支持多种解析器&#xff0c;包括Python的内置…...

Springboot2.7集成websocket及相关问题

1、集成websocket完整代码 导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 服务端代码 &#xff08;1&#xff09;注入bean Configur…...

MES管理系统和ERP系统在生产制造管理中的应用

MES生产管理系统通过过程管理、质量管理、设备管理、产品跟踪和溯源、性能分析和物料管理等方面来管理生产制造&#xff0c;旨在建立规范的生产管理信息平台&#xff0c;提高企业核心竞争力。ERP系统则通过制定生产计划、细分物料需求计划、车间订单下达和生产回报等步骤进行生…...

Netty Channel 详解

优质博文&#xff1a;IT-BLOG-CN 一、Netty 服务端启动过程 【1】创建服务端Channel&#xff1b; 【2】初始化服务端Channel&#xff1b; 【3】注册Selector&#xff1b; 【4】端口绑定&#xff1a;我们分析源码的入口从端口绑定开始&#xff0c;ServerBootstrap的bind(int in…...

sqlite 做网站数据库/互联网广告营销是什么

二叉树解题报告 6-1 二叉树的非递归遍历 用栈模拟递归操作 先序和中序都比较简单&#xff0c;一个是入栈就输出&#xff0c;一个是出栈才输出 后序相对复杂&#xff1a; 一直往做孩子遍历&#xff0c;压栈左孩子访问过或者没有左孩子&#xff0c;访问右孩子当左右孩子都访…...

艺友网站建设/网销是什么工作好做吗

降级策略RT是平均响应时间策略 设置RT的响应时间单位毫秒&#xff0c;RT最大值为4900毫秒&#xff0c;需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rtxxx来配置 需要使用到jmeter测试工具&#xff0c;jmeter下载页面 下载zip包即可 解压后修改配置文件b…...

做网站的做网站麻烦吗/营销培训内容有哪些

奇怪的姿势:高维前缀和首先请先看一题:Bzoj5092:一句话题面:我们做xor前缀和后&#xff0c;对每一个i&#xff0c;输出j<i,max(s[i]^s[j]s[j])。一般人估计上来就想可持久化Trie了。然而我们发现&#xff0c;对于某一位&#xff0c;如果s[i]这位为1&#xff0c;对于s[j]&…...

港巢网站建设/新站如何让百度快速收录

LAMP介绍 目前最为成熟的一种企业网站应用模式&#xff0c;可提供动态Web站点应用及开发环境。 构成组件 Linux、Apache、MySQL、PHP/Perl/Python LAMP的优势 成本低廉 可定制、易于开发。 一、主机环境:redhat企业版5.4 i386 配置好本地yum 需要下载的包&#xff1a;…...

基于阿里云的网站开发/有广告位怎么找广告商

作者 | piglei来源 | 腾讯技术工程知乎专栏在这个世界上&#xff0c;人们每天都在用 Python 完成着不同的工作。而文件操作&#xff0c;则是大家最常需要解决的任务之一。使用 Python&#xff0c;你可以轻松为他人生成精美的报表&#xff0c;也可以用短短几行代码快速解析、整理…...

wordpress 舆情管理系统/公司员工培训内容有哪些

一、使用profile管理用户口令概述&#xff1a;profile是口令限制&#xff0c;资源限制的命令集合&#xff0c;当建立数据库时&#xff0c;oracle会自动建立名称为default的profile。当建立用户没有指定profile选项时&#xff0c;那么oracle就会将default分配给用户。1.账户锁定…...