91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在spring boot中使用WebFluxTagsProvider

發布時間:2021-05-17 17:35:55 來源:億速云 閱讀:215 作者:Leah 欄目:編程語言

如何在spring boot中使用WebFluxTagsProvider?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

WebFluxTagsProvider

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

@FunctionalInterface
public 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<Tag> 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<Tag> 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常量

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳信县| 长寿区| 聂拉木县| 宁陕县| 旅游| 勐海县| 灵璧县| 舟曲县| 民勤县| 顺昌县| 阿坝县| 滦平县| 涞源县| 周口市| 开阳县| 九龙城区| 东辽县| 阳高县| 岳阳市| 炎陵县| 郁南县| 怀集县| 祁阳县| 东平县| 左云县| 望谟县| 商河县| 搜索| 惠来县| 涿州市| 澄城县| 肥城市| 青海省| 阿城市| 长子县| 松潘县| 浮山县| 于都县| 罗田县| 普兰县| 英吉沙县|