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配置中心,相信学友们会有新的感悟。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim的使用介绍以及命令大全

懒羊羊感谢大家的关注和三连支持~ 目录 前言 一、vim的使用介绍 二、命令大全 1.命令模式 &#xff08;1&#xff09;复制&#xff08;配合粘贴命令p使用&#xff09; &#xff08;2&#xff09;剪切 &#xff08;3&#xff09;粘贴 &#xff08;4&#xff09;删除 …

GIS前端编程-Leaflet插件扩展

GIS前端编程-Leaflet插件扩展 Leaflet插件扩展基本原理Leaflet插件扩展开发方法1. L.Handler扩展2. L.Control扩展为了高效率地进行软件开发 Leaflet插件扩展基本原理 Leaflet是面向移动设备和Web的开源JavaScript库&#xff0c;具有设计简单、性能良好和可用性强的特点&#…

c#.NET技术做到ChatGPT流式响应并实现打字机效果 实现ChatGPT的Stream传输

.NET技术做到ChatGPT流式响应并实现打字机效果 ChatGPT是当前备受瞩目的人工智能产品之一&#xff0c;它具备与人类进行智能对话的能力&#xff0c;同时能够理解人类的想法和需求。在内容创作、营销、智能客服、教育、投资等领域和场景中&#xff0c;ChatGPT都展现出了巨大的…

【openKylin】OpenKylin1.0 x86_64 VMWare安装手册

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

选择器进阶与表单表格

华子目录 选择器并集选择器后代选择器子代选择器伪类选择器伪元素选择器结构选择器属性选择器相邻选择器 表单&#xff08;form&#xff09;label标签 表格&#xff08;table标签&#xff09;合并单元格 选择器 下面是我们之前学习过的选择器 *{}&#xff1a;通配符选择器&am…

分销小程序商城功能_小程序商城适合谁_OctShop

微信推出小程序后&#xff0c;分销小程序商城就受到了非常多企业和商家的关注&#xff0c;通过分销商城小程序企业或商家就可以获得庞大的用户裂变过来的用户&#xff0c;组成一个不断裂变拉新用户的网络&#xff0c;可以大大提高企业或品牌的曝光度&#xff0c;从而提高企业或…

视频图像处理算法opencv模块硬件设计图像颜色识别模块

1、Opencv简介 OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、Rub…

LeetCode 1282. Group the People Given the Group Size They Belong To【哈希表】1267

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现

系列文章导航 《优化接口设计的思路》系列&#xff1a;第一篇—接口参数的一些弯弯绕绕 《优化接口设计的思路》系列&#xff1a;第二篇—接口用户上下文的设计与实现 前言 大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术…

Peppertype.ai:人工智能内容营销平台

【产品介绍】 名称 Peppertype.ai 具体描述 Peppertype.ai是一个AI驱动的文章生成工具&#xff0c;可以帮助你在几秒钟内为各种渠道创建吸引人 的内容。无论你是想要写广告文案、社交媒体标题、博客大纲还是网站内容&#xff0c;Peppertype…

基于SpringBoot蜗牛兼职网的设计与实现【附PPT|万字文档(LW)和搭建文档】

主要功能 前台界面&#xff1a; ①首页、兼职信息推荐、查看更多等 ②职位申请、申请日期、上传简历、点击下载简历、留言反馈等 ③个人中心、上传图片、更新信息等 后台登录&#xff1a; ①用户登录&#xff1a; 个人中心、修改密码、个人信息、职位申请管理 ②企业登录&…

java在mysql中查询内容无法塞入实体类中,报错 all elements are null

目录 一、问题描述二、解决方案 一、问题描述 java项目中整体配置了mysql的驼峰式字段匹配规则。 mybatis.configuration.map-underscore-to-camel-casetrue由于项目需求&#xff0c;需要返回字段为file_id&#xff0c;file_url&#xff0c;并且放入实体类中&#xff0c;实体…

赢麻了!smardaten闷声干大事,竟然用无代码开发了复杂小程序!

本文目录 一、【前言】二、移动端项目实战&#xff1a;女性关爱云服务平台2.1 项目背景2.2 6大场景功能拆解&#xff08;1&#xff09;场景1-首页&#xff08;2&#xff09;场景2-找活动&#xff08;3&#xff09;场景3-找组织&#xff08;4&#xff09;场景4-找服务&#xff0…

无频闪护眼灯哪个好一点?盘点无频闪减蓝光护眼灯

可以肯定的是&#xff0c;护眼灯一般可以达到护眼的效果。看书和写字时&#xff0c;光线应适度&#xff0c;不宜过强或过暗&#xff0c;护眼灯光线较柔和&#xff0c;通常并不刺眼&#xff0c;眼球容易适应&#xff0c;可以防止光线过强或过暗导致的用眼疲劳。如果平时生活中需…

Unity中 UI Shader的基本功能

文章目录 前言一、实现思路1、暴露一个 2D 类型的属性来接受UI的纹理2、设置shader的层级为TransParent半透明渲染层级&#xff0c;一般UI都是在这个渲染层级3、更改混合模式&#xff0c;是 UI 使用的纹理&#xff0c;该透明的地方透明 二、代码实现 前言 Unity中 UI Shader的…

视频怎么压缩?把视频压缩的小一点这样做

视频压缩在我们的生活和工作中有着广泛的应用需求&#xff0c;是一种减少视频文件大小的方法&#xff0c;可以给我们带来以下几个方面的作用&#xff1a; 1、减少存储空间占用&#xff1a;视频压缩可以显著减少视频的大小&#xff0c;从而腾出更多的存储空间&#xff0c;对于手…

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

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

华为数通方向HCIP-DataCom H12-821题库(单选题:341-360)

第341题 在BGP中代表对等体之间已经建立连接的状态是以下哪一种? A、Active B、Connect C、Established D、Open 答案:C 第342题 以下关于路由选择工具的描述,错误的是哪一项? A、访问控制列表用于匹配路由信息或者数据包的地址,过滤不符合条件的路由信息或数据包 …

EXE文件加密器

EXE文件加密器V3.0&#xff0c;主要是用于对EXE文件进行加密 有需要的朋友下载 点我下载

Writesonic:博客和内容创作者的终极写作助手

【产品介绍】 产品名称 Writesonic 上线时间 成立于2020年 具体介绍 Writesonic是一个强大的人工智能写作助手&#xff0c;它使用自然语言处理&#xff08;NLP&#xff09;和机器学习算法来生成内容&#xff0c;这些内容不仅写得好&#xff0c;而且还为SEO和转…