千家信息网

spring boot中WebFluxTagsProvider的作用是什么

发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,这篇文章主要介绍"spring boot中WebFluxTagsProvider的作用是什么",在日常操作中,相信很多人在spring boot中WebFluxTagsProvider的作用是什么问题
千家信息网最后更新 2025年01月27日spring boot中WebFluxTagsProvider的作用是什么

这篇文章主要介绍"spring boot中WebFluxTagsProvider的作用是什么",在日常操作中,相信很多人在spring boot中WebFluxTagsProvider的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"spring boot中WebFluxTagsProvider的作用是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

本文主要研究一下webflux的WebFluxTagsProvider

WebFluxTagsProvider

spring-boot-actuator-2.1.5.RELEASE-sources.jar!/org/springframework/boot/actuate/metrics/web/reactive/server/WebFluxTagsProvider.java

@FunctionalInterfacepublic interface WebFluxTagsProvider {        /**         * Provides tags to be associated with metrics for the given {@code exchange}.         * @param exchange the exchange         * @param ex the current exception (may be {@code null})         * @return tags to associate with metrics for the request and response exchange         */        Iterable httpRequestTags(ServerWebExchange exchange, Throwable ex);}
  • WebFluxTagsProvider接口定义了httpRequestTags方法

DefaultWebFluxTagsProvider

spring-boot-actuator-2.1.5.RELEASE-sources.jar!/org/springframework/boot/actuate/metrics/web/reactive/server/DefaultWebFluxTagsProvider.java

public class DefaultWebFluxTagsProvider implements WebFluxTagsProvider {        @Override        public Iterable httpRequestTags(ServerWebExchange exchange,                        Throwable exception) {                return Arrays.asList(WebFluxTags.method(exchange), WebFluxTags.uri(exchange),                                WebFluxTags.exception(exception), WebFluxTags.status(exchange),                                WebFluxTags.outcome(exchange));        }}
  • DefaultWebFluxTagsProvider实现了WebFluxTagsProvider接口,它返回了method、uri、exception、status、outcome这几个tag

WebFluxTags

spring-boot-actuator-2.1.5.RELEASE-sources.jar!/org/springframework/boot/actuate/metrics/web/reactive/server/WebFluxTags.java

public final class WebFluxTags {        private static final Tag URI_NOT_FOUND = Tag.of("uri", "NOT_FOUND");        private static final Tag URI_REDIRECTION = Tag.of("uri", "REDIRECTION");        private static final Tag URI_ROOT = Tag.of("uri", "root");        private static final Tag URI_UNKNOWN = Tag.of("uri", "UNKNOWN");        private static final Tag EXCEPTION_NONE = Tag.of("exception", "None");        private static final Tag OUTCOME_UNKNOWN = Tag.of("outcome", "UNKNOWN");        private static final Tag OUTCOME_INFORMATIONAL = Tag.of("outcome", "INFORMATIONAL");        private static final Tag OUTCOME_SUCCESS = Tag.of("outcome", "SUCCESS");        private static final Tag OUTCOME_REDIRECTION = Tag.of("outcome", "REDIRECTION");        private static final Tag OUTCOME_CLIENT_ERROR = Tag.of("outcome", "CLIENT_ERROR");        private static final Tag OUTCOME_SERVER_ERROR = Tag.of("outcome", "SERVER_ERROR");        private WebFluxTags() {        }        public static Tag method(ServerWebExchange exchange) {                return Tag.of("method", exchange.getRequest().getMethodValue());        }        public static Tag status(ServerWebExchange exchange) {                HttpStatus status = exchange.getResponse().getStatusCode();                if (status == null) {                        status = HttpStatus.OK;                }                return Tag.of("status", String.valueOf(status.value()));        }        public static Tag uri(ServerWebExchange exchange) {                PathPattern pathPattern = exchange                                .getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);                if (pathPattern != null) {                        return Tag.of("uri", pathPattern.getPatternString());                }                HttpStatus status = exchange.getResponse().getStatusCode();                if (status != null) {                        if (status.is3xxRedirection()) {                                return URI_REDIRECTION;                        }                        if (status == HttpStatus.NOT_FOUND) {                                return URI_NOT_FOUND;                        }                }                String path = getPathInfo(exchange);                if (path.isEmpty()) {                        return URI_ROOT;                }                return URI_UNKNOWN;        }        private static String getPathInfo(ServerWebExchange exchange) {                String path = exchange.getRequest().getPath().value();                String uri = StringUtils.hasText(path) ? path : "/";                return uri.replaceAll("//+", "/").replaceAll("/$", "");        }        public static Tag exception(Throwable exception) {                if (exception != null) {                        String simpleName = exception.getClass().getSimpleName();                        return Tag.of("exception", StringUtils.hasText(simpleName) ? simpleName                                        : exception.getClass().getName());                }                return EXCEPTION_NONE;        }        public static Tag outcome(ServerWebExchange exchange) {                HttpStatus status = exchange.getResponse().getStatusCode();                if (status != null) {                        if (status.is1xxInformational()) {                                return OUTCOME_INFORMATIONAL;                        }                        if (status.is2xxSuccessful()) {                                return OUTCOME_SUCCESS;                        }                        if (status.is3xxRedirection()) {                                return OUTCOME_REDIRECTION;                        }                        if (status.is4xxClientError()) {                                return OUTCOME_CLIENT_ERROR;                        }                        return OUTCOME_SERVER_ERROR;                }                return OUTCOME_UNKNOWN;        }}
  • WebFluxTags定义了URI_NOT_FOUND、URI_REDIRECTION、URI_ROOT、URI_UNKNOWN、EXCEPTION_NONE、OUTCOME_UNKNOWN、OUTCOME_INFORMATIONAL、OUTCOME_SUCCESS、OUTCOME_REDIRECTION、OUTCOME_CLIENT_ERROR、OUTCOME_SERVER_ERROR这些Tag常量

小结

WebFluxTagsProvider接口定义了httpRequestTags方法;DefaultWebFluxTagsProvider实现了WebFluxTagsProvider接口,它返回了method、uri、exception、status、outcome这几个tag;WebFluxTags定义了URI_NOT_FOUND、URI_REDIRECTION、URI_ROOT、URI_UNKNOWN、EXCEPTION_NONE、OUTCOME_UNKNOWN、OUTCOME_INFORMATIONAL、OUTCOME_SUCCESS、OUTCOME_REDIRECTION、OUTCOME_CLIENT_ERROR、OUTCOME_SERVER_ERROR这些Tag常量

到此,关于"spring boot中WebFluxTagsProvider的作用是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0