Spring Boot 接入Jager后,访问接口时,默认显示对应控制器的方法名。如下图: 控制器方法名经常会重名,也不利于我们利用URL查询接口。在这种情况下,我们可以利用Opentracing提供的方法获取到当前Span,并修改OperationName。 1、新建一个Filter用于修改OperationName 通过 GlobalTracer 获取到当前 Span ,并写入 HttpSer…
SpringBoot中Servlet提供的Filter与Gin的Middleware洋葱模型是很相似的,本质上可以认为是责任链设计模式。通过Filter,我们可以获取到请求对象 ServletRequest 、响应对象 ServletResponse 。 利用Filter的特性,我们可以实现一个Filter,获取Request和Response,并整合写入到日志中去。 本文基于 Spring Bo…
Zipkin是最早流行起来的主流分布式跟踪平台,起源于Google Dapper并由Twitter进一步开发。而后Uber用Golang实现了Jaeger。Jaeger除了兼容Zipkin原有的大部分功能以外,还提供了更为丰富的功能。对比来说,两者都是比较成熟稳定的分布式跟踪解决方案。 考虑Jaeger更好的性能、更轻量的资源占用,所以决定在项目中使用Jaeger。 Spring Cloud 的S…
在实现管理后台业务时,基本上一定会遇到对列表进行筛选操作(如下图)。将筛选条件逐个硬编码到服务端代码中,一定是又臭又长。因此在成熟的项目中,一般都会对列表查询筛选条件进行封装。这里就提供一个简单的封装方案。 简单演示 如果硬编码了筛选条件,后台查询接口的Payload一般会是这样: { page:1, size:10, where:{ name:"xxx", mobileNumber:"11122…
最近在学习Spring全家桶。Spring Initializr有一堆组件,了解了解顺手记录一下。 目前还未整理完,会陆续补全。 --- Developer Tools 开发工具 Spring Native (实验性) Spring于2021年发布的新项目。相比一般使用的传统Java常规虚拟机,Spring Native 使用GraalVM原生镜像方式运行,可以更好地适应云原生。比如打包出更小的镜…