首页 > 开发 > Java > 正文

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

2024-07-14 08:42:22
字体:
来源:转载
供稿:网友

在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;@Configurationpublic 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添加自定义拦截器的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VeVb武林网网站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表