Spring Boot 3.x中DefaultWebMvcTagsProvider废弃及WebMvcTags获取问题
核心替代类说明
- 废弃的
org.springframework.boot.actuate.metrics.web.servlet.DefaultWebMvcTagsProvider可替换为org.springframework.boot.actuate.metrics.web.servlet.DefaultServletTagsProvider,它继承自统一的ServletTagsProvider接口,提供Servlet环境下请求指标标签的生成能力,逻辑与原类基本一致。 - 原
WebMvcTags类已被移除,对应的标签生成功能由org.springframework.boot.actuate.metrics.web.servlet.ServletTags承接,该类包含了诸如method(HttpServletRequest request)、uri(HttpServletRequest request, HandlerMapping handlerMapping)等静态方法,覆盖原WebMvcTags的核心功能。
示例:自定义Servlet标签提供者
如果需要扩展标签生成逻辑,可以继承DefaultServletTagsProvider实现自定义类:
import org.springframework.boot.actuate.metrics.web.servlet.DefaultServletTagsProvider; import org.springframework.boot.actuate.metrics.web.servlet.ServletTags; import io.micrometer.core.instrument.Tag; import io.micrometer.core.instrument.Tags; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class CustomServletTagsProvider extends DefaultServletTagsProvider { @Override public Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response, Object handler, Throwable exception) { // 复用父类生成的默认标签 Iterable<Tag> defaultTags = super.getTags(request, response, handler, exception); // 添加自定义标签(示例:额外添加请求方法和URI标签) return Tags.concat(defaultTags, ServletTags.method(request), ServletTags.uri(request, null)); } }
注册自定义标签提供者
将自定义类注册为Spring Bean即可生效:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.boot.actuate.metrics.web.servlet.ServletTagsProvider; @Configuration public class MetricsConfiguration { @Bean public ServletTagsProvider servletTagsProvider() { return new CustomServletTagsProvider(); } }
内容的提问来源于stack exchange,提问作者raksha n
相关产品推荐
相关产品推荐

