springboot项目实例,SpringBoot多模块项目(Multi-Modules)
springboot项目实例,SpringBoot多模块项目(Multi-Modules)详细介绍
本文目录一览: SpringBoot + ES基本项目搭建实例
之前一直没有写ES相关的博文,现在开始补课,预计5-6篇博文将es的使用姿势展示给各位小伙伴;本文将作为es结合springboot的第一篇博文,基本项目环境搭建
本项目借助 SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA 进行开发
开一个web服务用于测试
配置文件application.yml,注意下面的配置信息,下面采用的是由我们自己来解析配置的方式
说明
上面配置介绍的是一种偏基础的es文档操作姿势,相比较于封装得更好的 spring-boot-starter-data-elasticsearch ,使用更加灵活
接下来我们基于 RestHighLevelClient 来操作es,首先第一步就是需要初始化这实例
注意上面的实现,用户名 + 密码并没有使用,当es设置了用户名、密码之后,是通过每次请求时,在请求头基于Basic Auth方式进行身份验证的;后面会介绍到
我们在本机搭建了一个es用于模拟测试,在上面的配置完之后,就可以直接与es进行交互了
下面是一个简单的使用姿势
注意上面的实现,有下面几个重要知识点
身份验证
采用Basic Auth方式进行身份校验,简单来说就是在请求头中添加一个
? key = Authorization
? value = "Basic " + base64(user + ":" + pwd)
访问姿势
上面是一个根据 id 查询文档的实例,简单可以理解为三步
?创建: XxRequest
?添加请求头: RequestOptions.Builder.addHeader
?执行: client.get(xxRequest, RequestOptions)
?工程:https://github.com/liuyueyi/spring-boot-demo
?源码:https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot/142-search-es
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
?一灰灰Blog个人博客 https://blog.hhui.top
?一灰灰Blog-Spring专题博客 http://spring.hhui.top
[1] 200605-Centos 安装ElasticSearch - 一灰灰Blog: https://blog.hhui.top/hexblog/2020/06/05/200605-Centos-%E5%AE%89%E8%A3%85ElasticSearch/ [2] 210329-Elastic & Kibana安装与基本使用 - 一灰灰Blog: https://blog.hhui.top/hexblog/2021/03/29/210329-Elastic-Kibana%E5%AE%89%E8%A3%85%E4%B8%8E%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/
spring boot 实例之 用户登录
上两篇完成了用户信息表的增删查,接下来增加用户登录功能。采用spring security来进行权限控制。我们希望用户可以通过用户名+密码、邮箱+密码、手机号+验证码、微信登录三种登录途径。
先用来完成用户名+密码或手机号+验证码登录。
前面做的用户信息表不是用来登录的,那些信息只是用户的基本信息。为了在用户列表请求得到的数据中不包含密码、手机号等敏感信息。把登录用的数据分开保存,关联到用户信息。
创建数据模型 Safety
这里我们先做一个保存的API,如果不保存一个密码的话,登录的功能不方便测试。先简单的实现用户登录的功能,接下去再优化,修改。把能考虑到的不安全因素解决。
创建一个用户名为biboheart,手机号为13800,密码为test的用户。用户前面的列表接口能查到最新创建的用户。
引入spring security组件,开始开发用户登录功能。
创建包:com.biboheart.demo.user.security,用户登录功能都在这个包中完成。
创建security配置文件
因为我们有两种登录方式,所以我们建立usernamePasswordAuthenticationProvider和mobileCodeAuthenticationProvider两个provider来处理登录请求。
UsernamePasswordAuthenticationToken是spring security内置的token对象。我们就不再定义了,需要定义一个MobileCodeAuthenticationToken在包com.biboheart.demo.user.security.tokens中
创建一个过滤器,替换掉原来的UsernamePasswordAuthenticationFilter过滤器。定义为BhAuthenticationFilter 继承至 AbstractAuthenticationProcessingFilter。
对于登录请求,我们接收三个参数。分别是:username,password,autype。autype参数用于告知登录类型:默认为用户名密码方式,mobileCode为手机号验证码方式。如果是mobileCode方式,那么username对应的是手机号,password对应的是验证码。
通过SecurityConfiguration中的.addFilterAt(bhAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)插入过滤器。
用户名密码认证的实现
手机号验证码认证的实现
更多的认证方式照着扩展就可以了。
用户登录需要界面,未登录时要跳转到登录界面,登录成功后要跳转到首页。
页面跳转控制器
首页控制器
index.html
hello.html
login.html
在pom.xml中引入组件
首页是允许访问的,点击“这里”的链接。就进入登录页面。
选择手机号验证码登录:
可以点击注销,再试试用户名密码登录。
15《Spring Boot 入门教程》多数据源与分布式事务
一个项目中使用多个数据源的需求,我们在日常工作中时常会遇到。
以商城系统为例,有一个 MySQL 的数据库负责存储交易数据。公司还有一套 ERP 企业信息化管理系统,要求订单信息同步录入 ERP 数据库,便于公司统一管理,而该 ERP 系统采用的数据库为 SQL Server 。
此时,就可以在 Spring Boot 项目中配置多个数据源。另外,使用多数据源后,需要采用分布式事务来保持数据的完整性。
本小节我们使用 Spring Boot 开发一个商城系统的订单生成功能,订单信息同时进入 MySQL 与 SQL Server 数据库。
首先创建 MySQL 数据库 shop ,并新建订单表 order ,表结构如下:
order 表结构
然后创建 SQL Server 数据库 erpshop ,并新建订单表 erp_order ,表结构如下。注意 id 是自增长的唯一标识,out_id 是对应订单在 MySQL 数据库中的唯一标识,以便在两个库中比对订单。
erp_order 结构
接下来,我们开始实现 Spring Boot 后端项目,数据持久层采用 MyBatis 框架,同时访问两个数据源。
Spring Boot 版本选择 2.2.5 ,Group 为 com.imooc , Artifact 为 spring-boot-multidb,生成项目后导入 Eclipse 开发环境。
我们引入热部署依赖、 Web 依赖、数据库访问相关依赖及测试相关依赖,具体如下:
实例:
由于我们要同时访问两个数据库,所以需要在配置文件中添加两个数据源的配置信息。注意配置多数据源时, url 配置需要使用 spring.datasource.db1.jdbc-url=xxx 的形式。
实例:
多个数据源的情况下, 我们需要通过配置类,将数据源注册为组件放入 Spring 容器中。
实例:
通过这个配置类, Spring 容器中就有两个数据源组件,这两个组件分别采用 spring.datasource.db1 和 spring.datasource.db2 开头的配置信息。所以通过这两个组件,就能分别操作 MySQL 数据源 1 和 SQL Sever 数据源 2 。
多数据源情况下, MyBatis 中的关键组件 SqlSessionFactory 和 SqlSessionTemplate 也需要单独配置,我们需要为两个数据源分别配置一套组件。
实例:
通过上面的配置类, com.imooc.springbootmultidb.mapper1 包中的 DAO 数据访问接口会自动调用 sqlSessionTemplate1 组件实现具体数据库操作,而 sqlSessionTemplate1 操作的数据源已经通过配置类设置为 db1 。同时, DAO 数据访问接口对应的映射文件已经指定到 classpath:mapper1/ 目录去寻找。这样数据源 – DAO 数据访问接口 – 映射文件三者的对应关系就建立起来了。
数据源 2 的配置方法是一样的, com.imooc.springbootmultidb.mapper2 包中的 DAO 数据访问接口会自动调用 sqlSessionTemplate2 组件,其操作的数据源即为 db2 ,其对应的映射文件指定到 classpath:mapper2/ 目录去寻找。
实例:
数据访问接口的位置已经在配置类指定,首先在 com.imooc.springbootmultidb.mapper1 创建 OrderDao ,操作的是数据源 1 中的 order 表。
实例:
然后在 com.imooc.springbootmultidb.mapper2 创建 ErpOrderDao ,操作的是数据源 2 中的 erporder 表。
实例:
这两个接口中使用的数据对象比较简单,代码如下:
实例:
分别针对 OrderDao 、 ErpOrderDao 编写对应的映射文件,然后按照配置类指定的位置,两个文件分别放到 resources/mapper1 和 resources/mapper2 目录下。
实例:
实例:
数据操作接口与对应的映射文件均已编写完毕,现在可以通过测试类进行多数据源测试了,我们在测试类中同时向两个库插入记录。
实例:
运行测试方法后,两个数据库表中均新增数据成功,这样我们就成功的使用 Spring Boot 同时操作了两个数据源。
采用多数据源之后,事务的实现方式也随之发生变化。当某个数据源操作出现异常时,该数据源和其他数据源的事务都需要回滚。这种涉及多个数据源的事务,称为分布式事务,接来下我们就来具体实现一下。
在 pom.xml 引入 Atomikos 事务管理器相关的依赖项, Atomikos 是一个开源的事务管理器,支持分布式事务。
实例:
需要将默认的数据源更换为支持分布式事务的数据源, MySQL 对应的数据源为 MysqlXADataSource , SQL Server 对应的数据源为 SQLServerXADataSource 。
实例:
继续修改 DataSourceConfig 类,在其中配置分布式事务管理器组件。当项目中使用事务时,会通过配置的分布式事务管理器管理分布式事务操作。
实例:
在测试方法上添加 @Transactional 开启事务,然后在两个数据源操作中间模拟抛出异常。
实例:
此时运行测试类,可以发现数据源 1 的事务已回滚,验证成功!
在开发 Spring Boot 项目时,如果默认配置满足不了我们的需求,可以通过手工配置组件实现我们需要的功能。这些组件可能是各个公司提供的,我们根据相应文档,为其配置各个属性即可。
SpringBoot多模块项目(Multi-Modules)
经常看到GitHub上的一些官方demo,为了展示很多功能,项目是由多模块的形式组织的,基于maven构建的形式为根文件夹下有个pom.xml,每个功能文件夹下又有pom.xml。 刚开始傻傻不会用的时候,直接引入子文件夹下的pom.xml为maven项目。然后有需要看另一个功能又打开了一个子模块,因为IDE用的是idea,变成了多窗口。后来发现直接打开父模块接可以了,各个子模块可以在同一个窗口下切换和启动。
以下最简单的建一个多模块项目,为了学习微服务,将建两个springboot web的子模块,服务提供者provider和消费者consumer。 两个服务在同个idea窗口中开发和启动,测试调用consumer的服务,consumer内部会调用provider。
new Module - > spring initializr,分别新增artifactId为provider和consumer,放在springbootmodules目录之下:
因为两个SpringBoot项目都默认是8080端口,为了能同时启动,调整consumer的端口为8081,在consumer的application.properties中添加server.port=8081
在provider和consumer分别新增两个controller: ProviderController和ConsumerController,返回最简单的字符串。 ProviderController.java:
ConsumerController中为了调用provider( http://localhost:8081/provider ),使用了spring的RestTemplate做http客户端,多配置了RestTemplate的Bean
父pom.xml现在只有管理两个子模块的作用,可以抽取子模块统一的配置信息和依赖版本控制放父模块中管理。
父pom.xml:
子模块pom.xml,设置parent为springbootmodules:
使用mvn clean package命令,或点击idea maven窗口功能,把两个子模块打成jar包:
使用java -jar命令启动两个服务:
两个服务都正常启动,并且服务消费者consumer调用服务提供者provider正常:
Spring Boot项目传参校验最佳实践
场景还原
简单业务场景模拟:
假如你现在在做一个成绩录入系统,你愉快地用 Spring Boot框架 写了一个后台接口,用于接收前台浏览器传过来的 Student 对象,并插入后台数据库。
我们将传入的 Student 对象定义为:
然后写一个 Post请求 的后台接口,来接收网页端传过来的 Student 对象:
此时我想你一定看出来了上面这段 代码的漏洞 ,因为我们并没有对传入的 Student 对象做任何 数据校验 ,比如:
Student 对象里三个字段的某一个忘传了,为 null 怎么办? Student 的 score 分数,假如写错了,写成 101 分怎么办? Student 的 mobile 11位手机号码,假如填错了,多写了一位怎么办?...等等
这些数据虽然在前端页面一般会做校验,但我们作为一个 严谨且良心 的后端开发工程师,我们肯定要对传入的每一项数据做 严格的校验 ,所以我们应该怎么写?
写是写完了,就是感觉 手有点酸 ,并且 心有点累 ,这个 Student 对象倒还好,毕竟内部仅3个字段,假如一个复杂的对象有30个字段怎么办?简直不敢想象!
神注解加持!
其实Spring框架很早版本开始,就通过 注解的方式 ,来方便地为我们提供了各项交互 数据的校验 工作,比如上面的例子,我们只需要在传入的 Student 实体类的字段中加入对应注解即可方便的解决问题:
当然,于此同时,我们还需要在对象入口处,加上注解 @Valid 来开启对传入 Student 对象的验证工作:
这时候,如果某个字段传入错误,比如我传数据的时候,将学生的成绩误传为 101 分,则接口返回结果便会提示出错误详情:
当然,关于这个事情的原理,既然用到了注解,无非用的也就是Java里的各种反射等知识来实现的,感兴趣的小伙伴可以借此机会研究一下!
数据异常统一拦截
上面利用注解的方式做统一数据校验 感觉十分美好 ,但唯一美中不足的就是返回的 结果太过繁杂 ,不一定使我们需要的格式,我们需要做 统一处理 ,比如:我只想将具体参数校验的错误提示信息给 抠出来 返回给前端即可。
为此,我们为项目配置 全局统一异常拦截器 来格式化所有数据校验的返回结果。
如上面代码所示,我们 全局统一拦截了 参数校验异常 MethodArgumentNotValidException ,并仅仅只拿到对应异常的详细 Message 信息吐给前端,此时返回给前端的数据就清楚得多:
可以的,非常优雅!
每天进步一点点!Peace!
SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。
1、Log4j2特点
1)核心特点
相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高;并发的特性,减少了死锁的发生。
2)性能测试
2、日志打印之外观模式
每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,增加应用程序代码和日志框架的耦合性。
《阿里巴巴Java开发手册》,其中有一条规范做了『强制』要求:
SLF4J日志API
Java简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,使用外观模式实现。
1、项目结构
2、不同环境的日志配置
使用最直接的方式,不同环境加载不同的日志配置。
1)开发环境配置
2)生产环境配置
3、Log4j2的配置文件
1、简单的测试程序
2、测试效果图
四、源代码地址
「开源」springboot快速开发框架推荐,接私活利器
本期为大家精选了 码云 上优秀的 Spring Boot 语言开源项目,涵盖了企业级系统框架、文件文档系统、秒杀系统、微服务化系统、后台管理系统等,希望能够给大家带来一点帮助:)
1、项目名称: 分布式敏捷开发系统架构
项目简介: 基于 Spring + SpringMVC + Mybatis 分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。
项目地址:https://gitee.com/shuzheng/zheng2、
2、项目名称: 模块化开发系统
项目简介: 以 SpringBoot 为中心,模块化开发系统,用户可以随意删减除权限框架外 任意的系统模块。复用,组装性强主要应用技术:
项目地址: https://gitee.com/YYDeament/88ybg
3、项目名称: JAVA 分布式快速开发平台
项目简介: JAVA 分布式快速开发平台:SpringBoot,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis 缓存,Shiro 权限管理,Spring-Session 单点登录,Quartz 分布式集群调度,Restful 服务,QQ/微信登录,App token 登录,微信/支付宝支付;日期转换、数据类型转换、序列化、汉字转拼音、身份证号码验证、数字转人民币、发送短信、发送邮件、加密解密、图片处理、excel 导入导出、FTP/SFTP/fastDFS 上传下载、二维码、XML 读写、高精度计算、系统配置工具类等。
项目地址:https://gitee.com/iBase4J/iBase4J
4、项目名称: 快速开发框架 ThinkGem
项目地址: https://gitee.com/thinkgem/jeesite
5、项目名称: Java 快速开发平台 MCMS
项目简介: 完整开源,Java 快速开发平台。基于 Spring、SpringMVC、Mybatis 架构,MStore 提供更多好用的插件与模板(文章、商城、微信、论坛、会员、评论、支付、积分、工作流、任务调度等,同时提供上百套免费模板任意选择),价值源自分享!铭飞系统不仅一套简单好用的开源系统、更是一整套优质的开源生态内容体系。
项目地址: https://gitee.com/mingSoft/MCMS
6、项目名称: 分布式秒杀系统
项目简介: 可能秒杀架构原理大家都懂,网上也有不少实现方式,但大多都是文字的描述,告诉你如何如何,什么加锁、缓存、队列之类。但很少全面有的案例告诉你如何去做,既然是从0到1,希望以下代码案例可以帮助到你。当然最终落实到生产,还有很长的路要走,要根据自己的业务进行编码,实施并部署。你将会在代码案例中学到以下知识:
项目地址: https://gitee.com/52itstyle/spring-boot-seckill
7、项目名称: Spring Boot 快速开发平台
项目简介: renren-fast 是一个轻量级的 Spring Boot 快速开发平台,其设计目标是开发迅速、学习简单、轻量级、易扩展;使用 Spring Boot、Shiro、MyBatis、Redis、Bootstrap、Vue2.x 等框架,包含:管理员列表、角色管理、菜单管理、定时任务、参数管理、代码生成器、日志管理、云存储、API 模块(APP 接口开发利器)、前后端分离等。
项目地址: https://gitee.com/babaio/renren-fast
8、项目名称: 企业级快速开发脚手架
项目简介: 本项目是 spring boot 搭建的一个企业级快速开发脚手架。其技术栈如下所示:
项目地址: https://gitee.com/jamen/slife
9、项目名称: 文件文档在线预览
项目简介: 此项目为使用 spring boot 打造文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,在取得公司高层同意后以Apache协议开源出来反哺社区,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如 doc、docx、Excel、pdf、txt、zip、rar、图片等等。
项目地址: https://gitee.com/kekingcn/file-online-preview
10、项目名称: 微服务化开发平台
项目简介: Cloud-Admin 是国内首个基于 Spring Cloud 微服务化开发平台,核心技术采用 Spring Boot2 以及 Spring Cloud Gateway 相关核心组件,前端采用 vue-element-admin 组件。具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关 API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。
项目地址: https://gitee.com/minull/ace-security
11、项目名称: 后台管理系统 Guns
项目简介: Guns 基于 SpringBoot,致力于做更简洁的后台管理系统,完美整合 springmvc + shiro + mybatis-plus + beetl。Guns 项目代码简洁,注释丰富,上手容易,同时 Guns 包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架。Guns v3.0 新增 rest api 服务,提供对接服务端接口的支持,并利用 jwt token 鉴权机制给予客户端的访问权限,传输数据进行 md5 签名保证传输过程数据的安全性!
项目地址: https://gitee.com/naan1993/guns
只需4步,自己搞个 Spring Boot Starter !
只要你用Springboot,一定会用到各种spring-boot-starter。其实写一个spring-boot-starter,仅需4步。下面我们就写一个starter,它将实现,在日志中打印方法执行时间。
在使用spring-boot-starter,会发现,有的项目名称是 XX-spring-boot-starter,有的是spring-boot-starter-XX,这个项目的名称有什么讲究呢?从springboot官方文档摘录如下:
从这段话可以看出spring-boot-starter命名的潜规则。
命名潜规则
spring-boot-starter-XX是springboot官方的starter
XX-spring-boot-starter是第三方扩展的starter
打印方法执行时间的功能,需要用到aop,咱们的项目就叫做 aspectlog-spring-boot-starter 吧。
项目的pom文件如下:
关于spring-boot-configuration-processor的说明,引自springBoot官方文档:
简单说就是:写starter时,在pom中配置spring-boot-autoconfigure-processor,在编译时会自动收集配置类的条件,写到一个 META-INF/spring-autoconfigure-metadata.properties 中。
本次我们就选用@ConditionalOnProperty。即配置文件中有aspectLog.enable=true,才加载我们的配置类。
下面开始写自动配置类
配置类简要说明:
当配置文件有 aspectLog.enable=true 时开启,如果配置文件没有设置 aspectLog.enable 也开启。
META-INF/spring.factories 是spring的工厂机制,在这个文件中定义的类,都会被自动加载。多个配置使用逗号分割,换行用\
如果有兴趣可以查看这2篇blog:
@Enable 驱动原理(设置连接)
@EnableAutoConfiguration 处理逻辑(设置连接)
这是我们最终的目录结构
在IDEA中,进行mvn intall
打包完成后,在其他项目中的pom中引入进行测试
springboot整合Hutool实现Convert类型转换实用案例-值得收藏
每天分享技术实战干货,技术在于积累和收藏,我们不一定比别人厉害多少,但我们懂得收藏和积累。万一有一天用到了呢!
青锋开源产品地址:https://gitee.com/msxy
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
Convert类可以说是一个工具方法类,里面封装了针对Java常见类型的转换,用于简化类型转换。Convert类中大部分方法为toXXX,参数为Object,可以实现将任意可能的类型转换为指定类型。同时支持第二个参数defaultValue用于在转换失败时返回一个默认值。
1、转换为字符串:
2、转换为指定类型数组
3、转换为日期对象
4、转换为集合
半角转全角
全角转半角
Spring boot 2.0 消息总线(Spring Cloud Bus) 高可用分布式配置中心 实例
配置中心的客户端要使用bootstrap.yml
bootstrap.yml优先于 application.yml 加载 即 bootstrap.yml加载完后才加载 application.yml
在需要更新的配置类上加@RefreshScope注解,@RefreshScope必须加,否则客户端会收到服务端的更新消息,但是更新不了,因为不知道更新哪里的。
18082: 是统一配置中心的端口
/auth-server/dev 对应远程配置文件的auth-server-dev.yml
/{name}-{profiles}.yml
/{label}/{name}-{profiles}.yml
name : 文件名,一般以服务名来命名
profiles : 一般作为环境标识
lable : 分支(branch),指定访问某分支下的配置文件
业务微服端的测试接口: http://127.0.0.1:18088/test
修改配置文件并提交到git上
我们发现再不重启服务的情况下就能获取到修改的属性值
只要开启 Spring Cloud Bus 后,不管是对 config-server 还是 config-client 执行/actuator/bus-refresh都是可以更新配置的,
如果有多个客户端,多个客户端都会接收到刷新配置的消息,并刷新配置。
某些场景下(例如灰度发布),我们可能只想刷新部分微服务的配置,此时可通过/actuator/bus-refresh/{destination}端点的 destination 参数来定位要刷新的应用程序。例如:/actuator/bus-refresh/customers:8000,这样消息总线上的微服务实例就会根据 destination 参数的值来判断是否需要要刷新。其中,customers:8000指的是各个微服务的 ApplicationContext ID。destination 参数也可以用来定位特定的微服务。例如:/actuator/bus-refresh/customers:**,这样就可以触发 customers 微服务所有实例的配置刷新。
远程配置文件修改后,不需要手动调用 http://localhost:18088/actuator/bus-refresh 即可刷新配置
选择Just the push event.,因为我们只需要push的时候进行回调,然后添加即可
每当我们更新远程配置文件后,push到git后,就会触发Payload URL(配置的是访问刷新配置的地址)