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

news2024/12/23 10:53:27

        目前,网络上讲解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配置中心,相信学友们会有新的感悟。

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

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

相关文章

JVM 虚拟机 ---> JVM 基础概念

文章目录 JVM 虚拟机 ---> JVM 基础概念一、Java 跨平台主要原因 二、JVM 的组成结构三、Java 代码执行流程四、JVM 的生命周期 JVM 虚拟机 —> JVM 基础概念 一、Java 跨平台 Java是一种可跨平台的编程语言&#xff0c;我们通常把CPU处理器与操作系统构成的计算机系统…

记录vxe-table show-overflow失效问题

后来发现&#xff0c;在使用的过程中发现vxe-table的show-overflow在普通的界面是生效的&#xff0c;但是在el-dialog对话框始终不出现 超出的文本鼠标移上去没有显示全部 排查后发现和tooltip的z-index有关&#xff0c;modal的z-index比tooltip的z-index大&#xff0c; 方法…

行业报告 | 智慧三角:长三角掀起AI产业热潮

原创 | 文 BFT机器人 产业集群是指在特定地理区域内&#xff0c;一群相关产业相互依存、相互关联、相互支持&#xff0c;形成密集的产业网络和价值链条的现象&#xff0c;这些相关产业可能涵盖整个产业链的不同环节&#xff0c;从原材料供应到产品研发、生产、销售和服务等多个…

回显服务器

写一个应用程序,让这个程序可以使用网络通信,这里就需要调用传输层提供的api,传输层提供协议,主要是两个: UDP,TCP,它们分别提供了一套不同的api,socket api. UDP和TCP UDP:无连接,不可靠传输,面向数据报,全双工 TCP:有连接,可靠传输,面向字节流,全双工 一个客户端可以连接多…

【计算机组成原理】读书笔记第一期:对程序员来说CPU是什么

目录 写在开头 CPU的结构 功能的角度 程序员的角度 寄存器与程序的执行流程 程序计数器 条件分支与循环 函数的调用流程 通过地址和索引实现数组 CPU的处理过程 结尾 写在开头 近期经他人推荐&#xff0c;正在阅读《程序是怎样跑起来的》这本书&#xff08;作者&…

为虚拟化环境带来更强I/O性能!SR-IOV技术简介

在 ICT 行业&#xff0c;不断提高硬件资源的使用效率是技术发展路线中亘古不变的主旋律。虚拟化作为其中最为主要的解决方式之一&#xff0c;其带来的影响早已不言而喻。而今天我们要说的&#xff0c;正是虚拟化中一项非常重要的技术 —— SR-IOV&#xff0c;也是下一代高端企业…

每日一练 | 网络工程师软考真题Day32

阅读以下说明&#xff0c;答复以下【问题1】至【问题5】 【说明】 某公司内部效劳器S1部署了重要的应用&#xff0c;该应用只允许特权终端PC1访问&#xff0c;如图4-1所示。为保证通信平安&#xff0c;需要在S1上配置相应的IPSec策略。综合考虑后&#xff0c;确定该IPSec策略如…

龙迅LT86204UX HDMI二进四出 支持高达4K60HZ的分辨率

龙迅LT86204UX 1.描述&#xff1a; LT86204UX HDMI2.0/1.4交换机具有2&#xff1a;4的开关&#xff0c;符合HDMI2.0/1.4规格&#xff0c;最大6Gbps高速数据速率&#xff0c;自适应均衡RX输入和预先强调的TX输出。LT86204UX HDMI2.0/1.4交换机自动检测电缆损耗&#xff0c;并自…

上位机的社会工作发展前景

在元宇宙发展的趋势下&#xff0c;上位机已经融合了虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;技术。我们不能局限于传统的电脑上的上位机开发&#xff0c;作为工控领域的从业者&#xff0c;我们应该打通PLC与各种先进外设的互通和互信。无论是i…

【C-C++源码】仓库管理系统 期末课设必备源码

文章目录 介绍 介绍 有两个版本&#xff0c;一个是C语言&#xff0c;一个是C&#xff0c;自行选择&#xff0c;VC、VS、devc等各编译器均可运行。代码注释齐全&#xff0c;容易理解,代码量850行。 printf("需要源码&#xff0c;可以百度&#xff1a;学长敲代码")&…

risc-v dv源代码分析

地址为 GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verificationRandom instruction generator for RISC-V processor verification - GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verif…

论文于祥读及复现——《VDO-SLAM: A Visual Dynamic Object-aware SLAM System》

论文详读之------《一个视觉动态对象感知SLAM系统》 0. 出发点&#xff08;暨摘要&#xff09;1.引言2. 相关工作2.1 探索针对动态环境的健壮SLAM2.2 分别执行SLAM和运动对象跟踪(MOT)&#xff0c;作为传统SLAM的扩展&#xff0c;用于动态场景理解。2.3 对象SLAM&#xff08;通…

2023年高校大数据实验室建设方案

大数据实验室建设方案具体内容包括&#xff1a;人才培养方案建设、课程资源建设、师资建设、实验室建设、教学服务建设。 泰迪打造国内领先的大数据人工智能及课程资源&#xff0c;包括&#xff1a;商务数据分析实训管理平台、云计算资源管理平台、大数据编程实训平台、商务数据…

linux入门---用匿名管道实现一个功能

前言 在之前的学习中我们知道通信的概念和匿名管道的使用&#xff0c;那么接下来我们就要用匿名管道来实现一个功能&#xff0c;首先我们有很多的函数需要被执行&#xff0c;然后创建一些子进程通过匿名管道方式给子进程传递一些信息&#xff0c;然后子进程就根据这些信息来确…

Linux安装免费Https证书,过期自动更新 省钱秘籍

Linux安装免费Https证书&#xff0c;过期自动更新 acme.sh这个服务可以友好地帮助我们获取免费的证书以及过期实现自动更新操作 官方网站&#xff1a;https://github.com/acmesh-official/acme.sh 介绍 嗨&#xff01;今天我要和大家聊聊关于使用acme.sh和Nginx结合生成HTT…

基于SpringBoot的招聘信息管理系统

基于SpringBootVue的招聘信息管理系统【附源码文档】、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、用户、…

运营商大数据可以帮助企业实现什么目标?

虽然现在有很多合法合规的运营商大数据&#xff0c;那么合法合规的运营商大数据可以实现什么目标&#xff1f; 1、对用户进行相应研究的目标 如果是合法合规的运营商大数据那么这种情况下&#xff0c;对于用户就能够进行相应的研究了。在这个过程中可以直接对产品的优化进行相…

【博客笔记+java+测试】

一、项目背景 1.个人博客采用前后端分离的方法来实现&#xff0c;同时使用数据库存储相关的数据&#xff0c;将其部署在云服务器上。前端主要分为五个页面&#xff1a;注册页、登录页、列表页、详情页和编辑页&#xff0c;以上模块实现了最简单的个人博客系统。其结合后端实现了…

读高性能MySQL(第4版)笔记05_优化服务器设置

1. 除非遇到异常情况&#xff0c;否则不需要调整配置 1.1. 不要“调优”服务器&#xff0c;不要使用比率、公式或“调优脚本”作为设置配置变量的基础 1.1.1. 在互联网上搜索配置建议并不总是一个好主意&#xff0c;你会在博客、论坛等找到很多糟糕的建议 1.1.2. 很难判断谁…

【高阶数据结构】红黑树 {概念及性质;红黑树的结构;带头结点的红黑树;红黑树的实现;红黑树插入操作详细解释;红黑树的验证}

红黑树 一、红黑树的概念 红黑树&#xff08;Red Black Tree&#xff09; 是一种自平衡二叉查找树&#xff0c;在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有…