package com.yunhai.userbase.loadtestmetrics;
/* =============================================================================
* [LOADTEST-METRICS] 临时埋点 —— 《压测与oapi埋点统计方案.md》阶段一
* 压测结束后整体移除:删除 loadtestmetrics 包 + 回退 pom.xml/application.yml
* 中 [LOADTEST-METRICS] 标记段 + DROP TABLE oapi_metrics。
* 移除步骤详见仓库根《埋点移除清单.md》。
* ============================================================================= */
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
/**
* [LOADTEST-METRICS] 埋点装配:注册 oapi 指标过滤器。
* 顺序说明(与方案 §2.1 的差异):方案原文写 +12(RequireAppSignFilter 之后),
* 但 +11 的 401 短路发生在 chain.doFilter 之前,+12 根本不会执行——
* 「401 验签失败也能统计」这一目标就落空了。故取 +10(与 AppAuthFilter 同级、
* 先于 +11 闸门):401 请求全量可统计;appKey 在 AppAuth 先执行时取权威 attr,
* 同序竞争落后时降级 header(签名场景两者取值一致,无实际偏差)。
*/
@Configuration
public class LoadTestMetricsConfig {
@Bean
public FilterRegistrationBean oapiMetricsFilter(OapiMetricsCollector collector) {
FilterRegistrationBean bean = new FilterRegistrationBean<>();
bean.setFilter(new OapiMetricsFilter(collector));
bean.addUrlPatterns("/oapi/*");
bean.setOrder(Ordered.HIGHEST_PRECEDENCE + 10);
bean.setName("oapiMetricsFilter");
return bean;
}
}