当前位置: 移动技术网 > IT编程>开发语言>Java > SpringBoot添加自定义拦截器的实现代码

SpringBoot添加自定义拦截器的实现代码

2019年07月19日  | 移动技术网IT编程  | 我要评论
在controller层时,往往会需要校验或验证某些操作,而在每个controller写重复代码,工作量比较大,这里在springboot项目中 ,通过继承webmvcco

在controller层时,往往会需要校验或验证某些操作,而在每个controller写重复代码,工作量比较大,这里在springboot项目中 ,通过继承webmvcconfigureradapter,添加拦截器。

1、webmvcconfigureradapter源码

/*
 * copyright 2002-2016 the original author or authors.
 *
 * licensed under the apache license, version 2.0 (the "license");
 * you may not use this file except in compliance with the license.
 * you may obtain a copy of the license at
 *
 *   http://www.apache.org/licenses/license-2.0
 *
 * unless required by applicable law or agreed to in writing, software
 * distributed under the license is distributed on an "as is" basis,
 * without warranties or conditions of any kind, either express or implied.
 * see the license for the specific language governing permissions and
 * limitations under the license.
 */
package org.springframework.web.servlet.config.annotation;
import java.util.list;
import org.springframework.format.formatterregistry;
import org.springframework.http.converter.httpmessageconverter;
import org.springframework.validation.messagecodesresolver;
import org.springframework.validation.validator;
import org.springframework.web.method.support.handlermethodargumentresolver;
import org.springframework.web.method.support.handlermethodreturnvaluehandler;
import org.springframework.web.servlet.handlerexceptionresolver;
/**
 * an implementation of {@link webmvcconfigurer} with empty methods allowing
 * subclasses to override only the methods they're interested in.
 *
 * @author rossen stoyanchev
 * @since 3.1
 */
public abstract class webmvcconfigureradapter implements webmvcconfigurer {
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void configurepathmatch(pathmatchconfigurer configurer) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void configurecontentnegotiation(contentnegotiationconfigurer configurer) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void configureasyncsupport(asyncsupportconfigurer configurer) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void configuredefaultservlethandling(defaultservlethandlerconfigurer configurer) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void addformatters(formatterregistry registry) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void addinterceptors(interceptorregistry registry) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void addresourcehandlers(resourcehandlerregistry registry) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void addcorsmappings(corsregistry registry) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void addviewcontrollers(viewcontrollerregistry registry) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void configureviewresolvers(viewresolverregistry registry) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void addargumentresolvers(list<handlermethodargumentresolver> argumentresolvers) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void addreturnvaluehandlers(list<handlermethodreturnvaluehandler> returnvaluehandlers) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void configuremessageconverters(list<httpmessageconverter<?>> converters) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void extendmessageconverters(list<httpmessageconverter<?>> converters) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void configurehandlerexceptionresolvers(list<handlerexceptionresolver> exceptionresolvers) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation is empty.
   */
  @override
  public void extendhandlerexceptionresolvers(list<handlerexceptionresolver> exceptionresolvers) {
  }
  /**
   * {@inheritdoc}
   * <p>this implementation returns {@code null}.
   */
  @override
  public validator getvalidator() {
    return null;
  }
  /**
   * {@inheritdoc}
   * <p>this implementation returns {@code null}.
   */
  @override
  public messagecodesresolver getmessagecodesresolver() {
    return null;
  }
}

可以看出,该类 还能配置其他很多操作,例如异常处理,跨域请求等配置。

2、自动义web配置类

import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.web.servlet.config.annotation.interceptorregistry;
import org.springframework.web.servlet.config.annotation.webmvcconfigureradapter;
@configuration
public class webmvcconfig extends webmvcconfigureradapter {
  @override
  public void addinterceptors(interceptorregistry registry) {
    registry.addinterceptor(getmyinterceptor()).addpathpatterns("/**");
  }
  @bean
  public myinterceptor getmyinterceptor(){
    return new myinterceptor();
  }
}

  如果需要添加多个拦截器,interceptorregistry registry.addinterceptor方法

public interceptorregistration addinterceptor(handlerinterceptor interceptor) {
    interceptorregistration registration = new interceptorregistration(interceptor);
    this.registrations.add(registration);
    return registration;
  }

registrations是个数组结构,可以添加多个

3、自动义拦截器

import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import javax.servlet.http.httpsession;
import org.slf4j.logger;
import org.slf4j.loggerfactory;
import org.springframework.web.method.handlermethod;
import org.springframework.web.servlet.handler.handlerinterceptoradapter;
public class myinterceptor extends handlerinterceptoradapter {
  final logger logger = loggerfactory.getlogger(getclass());
  @override
  public boolean prehandle(httpservletrequest request, httpservletresponse response, object handler) throws exception {
    //拦截操作
    return true;
  }
}

总结

以上所述是小编给大家介绍的springboot添加自定义拦截器的实现代码,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网