InterceptorRegistration 拦截器注册类

InterceptorRegistration

org.springframework.web.servlet.config.annotation.InterceptorRegistration 用于协助创建{@link MappedInterceptor}。

 属性

private final HandlerInterceptor interceptor;

private final List includePatterns = new ArrayList<>();

private final List excludePatterns = new ArrayList<>();

@Nullable
private PathMatcher pathMatcher;

private int order = 0;

addPathPatterns方法(指定拦截路径,往往使用 "/**")

/**
 * 添加注册拦截器应该应用到的URL模式。
 */
public InterceptorRegistration addPathPatterns(String... patterns) {
    return addPathPatterns(Arrays.asList(patterns));
}

/**
 * 基于列表的{@link #addPathPatterns(String…)}变体。
 */
public InterceptorRegistration addPathPatterns(List patterns) {
    this.includePatterns.addAll(patterns);
    return this;
}

excludePathPatterns方法(指定排除拦截路径,用于登录等部分开放接口)

/**
 * 添加注册拦截器不应该应用到的URL模式。
 */
public InterceptorRegistration excludePathPatterns(String... patterns) {
    return excludePathPatterns(Arrays.asList(patterns));
}

/**
 * 基于列表的{@link #excludePathPatterns(String…)}变体。
 * @since 5.0.3
 */
public InterceptorRegistration excludePathPatterns(List patterns) {
    this.excludePatterns.addAll(patterns);
    return this;
}

pathMatcher方法(高级方式)

/**
 * 与此拦截器一起使用的路径匹配器实现。
 * 这是一个可选的高级属性,只有在使用自定义路径匹配器实现时才需要,
 * 该实现支持映射元数据,而默认情况下不支持Ant路径模式。
 */
public InterceptorRegistration pathMatcher(PathMatcher pathMatcher) {
    this.pathMatcher = pathMatcher;
    return this;
}

order方法

/**
 * 指定要使用的订单位置。默认值为0。
 * @since 5.0
 */
public InterceptorRegistration order(int order){
    this.order = order;
    return this;
}

getOrder方法

/**
 * 返回要使用的订单位置。
 * @since 5.0
 */
protected int getOrder() {
    return this.order;
}

getInterceptor方法

/**
 * 构建底层拦截器。如果提供URL模式,则返回类型为{@link MappedInterceptor};
 * 否则{@link HandlerInterceptor}。
 */
protected Object getInterceptor() {
    /*
     * 如果拦截和排除的地址都为空时,返回 HandlerInterceptor 对象
     */
    if (this.includePatterns.isEmpty() && this.excludePatterns.isEmpty()) {
        return this.interceptor;
    }
    String[] include = StringUtils.toStringArray(this.includePatterns);
    String[] exclude = StringUtils.toStringArray(this.excludePatterns);
    MappedInterceptor mappedInterceptor = new MappedInterceptor(include, exclude, this.interceptor);
    if (this.pathMatcher != null) {
        mappedInterceptor.setPathMatcher(this.pathMatcher);
    }
    return mappedInterceptor;
}

你可能感兴趣的:(Java,spring)