You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.x迁移至3.2.0:WebMvcTagsContributor替代方案问询

Spring Boot 3.2.0 替代废弃的 WebMvcTagsContributor 方案

在Spring Boot 3.x版本中,原WebMvcTagsContributor已被废弃,官方将其拆分为两个独立接口:RequestTagsContributor和LongRequestTagsContributor,分别对应原类的getTags()和getLongRequestTags()方法。以下是具体替代实现步骤:

1. 实现 RequestTagsContributor(替代原getTags())

这个接口负责生成常规请求的监控标签,参数包含请求、响应、处理器及异常信息,方便扩展自定义标签:

import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.Tags;
import org.springframework.boot.actuate.web.tags.RequestTagsContributor;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

public class CustomRequestTagsContributor implements RequestTagsContributor {
    @Override
    public Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response, Object handler, Throwable exception) {
        // 复用原getTags()中的业务逻辑,添加自定义标签
        Tags customTags = Tags.of("custom_request_tag", "custom_value");
        
        // 示例:如果请求有异常,添加异常类标签
        if (exception != null) {
            customTags = customTags.and("exception_type", exception.getClass().getSimpleName());
        }
        
        return customTags;
    }
}

2. 实现 LongRequestTagsContributor(替代原getLongRequestTags())

针对长请求场景生成标签,接口参数包含请求和处理器:

import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.Tags;
import org.springframework.boot.actuate.web.tags.LongRequestTagsContributor;
import jakarta.servlet.http.HttpServletRequest;

public class CustomLongRequestTagsContributor implements LongRequestTagsContributor {
    @Override
    public Iterable<Tag> getLongRequestTags(HttpServletRequest request, Object handler) {
        // 复用原getLongRequestTags()中的业务逻辑
        return Tags.of("long_request_tag", "long_request_value");
    }
}

3. 注册自定义标签贡献类

将上述两个实现类注册为Spring Bean,框架会自动加载并使用:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TagsContributorConfig {
    @Bean
    public RequestTagsContributor customRequestTagsContributor() {
        return new CustomRequestTagsContributor();
    }

    @Bean
    public LongRequestTagsContributor customLongRequestTagsContributor() {
        return new CustomLongRequestTagsContributor();
    }
}

额外提示

  • 包路径变更:原类位于org.springframework.boot.actuate.metrics.web.servlet,新接口在org.springframework.boot.actuate.web.tags包下
  • 可借助RequestTags和LongRequestTags工具类生成默认标签(如请求方法、响应状态码等),结合自定义标签使用

内容的提问来源于stack exchange,提问作者Guruprasad A N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:21:03