zoukankan      html  css  js  c++  java
  • spring-boot添加自定义拦截器

    spring-boot中的WebMvcConfigurerAdapter类提供了很多自定义操作的方法,先贴出来大家看看

     1 package org.springframework.web.servlet.config.annotation;
     2 
     3 import java.util.List;
     4 import org.springframework.format.FormatterRegistry;
     5 import org.springframework.http.converter.HttpMessageConverter;
     6 import org.springframework.validation.MessageCodesResolver;
     7 import org.springframework.validation.Validator;
     8 import org.springframework.web.method.support.HandlerMethodArgumentResolver;
     9 import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
    10 import org.springframework.web.servlet.HandlerExceptionResolver;
    11 
    12 public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {
    13     public WebMvcConfigurerAdapter() {
    14     }
    15         
    16     public void configurePathMatch(PathMatchConfigurer configurer) {
    17     }
    18 
    19     public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    20     }
    21 
    22     public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
    23     }
    24 
    25     public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    26     }
    27 
    28     public void addFormatters(FormatterRegistry registry) {
    29     }
    30 
    31     public void addInterceptors(InterceptorRegistry registry) {
    32     }
    33 
    34     public void addResourceHandlers(ResourceHandlerRegistry registry) {
    35     }
    36 
    37     public void addCorsMappings(CorsRegistry registry) {
    38     }
    39 
    40     public void addViewControllers(ViewControllerRegistry registry) {
    41     }
    42 
    43     public void configureViewResolvers(ViewResolverRegistry registry) {
    44     }
    45 
    46     public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    47     }
    48 
    49     public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {
    50     }
    51 
    52     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    53     }
    54 
    55     public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
    56     }
    57 
    58     public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
    59     }
    60 
    61     public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
    62     }
    63 
    64     public Validator getValidator() {
    65         return null;
    66     }
    67 
    68     public MessageCodesResolver getMessageCodesResolver() {
    69         return null;
    70     }
    71 }

    如上代码的实现都是空的,也就是说我们想要完成自定义一些操作,只需要重写这个类中对应的方法,就可以实现

    比如昨晚写了篇自定义springboot的消息转换器 ,其中的一种实现就是通过重写这个类的方法

    下边贴一下重写addInterceptors从而实现自定义拦截器的demo

     1 package com.itcast.springboot;
     2 
     3 import org.springframework.context.annotation.Configuration;
     4 import org.springframework.web.servlet.HandlerInterceptor;
     5 import org.springframework.web.servlet.ModelAndView;
     6 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
     7 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
     8 
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 
    12 /**
    13  * @Author : Hellxz
    14  * @Description:自定义拦截器
    15  * @Date : 2018/4/8 12:36
    16  */
    17 @Configuration
    18 public class MyInterceptor extends WebMvcConfigurerAdapter {
    19     /**
    20      * @Author: Hellxz
    21      * @Description: 添加自定义拦截器
    22      * @Date: 2018/4/8 12:39
    23      */
    24     @Override
    25     public void addInterceptors(InterceptorRegistry registry) {
    26         /**
    27          * 自定义handlerInterceptor,匿名内部类,也可以单独提出来一个类
    28          */
    29         HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {
    30             @Override
    31             public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
    32                 System.out.println("—————进入拦截器");
    33                 return true;
    34             }
    35 
    36             @Override
    37             public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    38             }
    39 
    40             @Override
    41             public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    42             }
    43         };
    44         //将这个handler添加到签名认证拦截器中
    45         registry.addInterceptor(handlerInterceptor);
    46 //        添加拦截uri
    47 //        registry.addInterceptor(handlerInterceptor).addPathPatterns("/user/**");
    48         super.addInterceptors(registry);
    49     }
    50 
    51 }
  • 相关阅读:
    HDU 3999 The order of a Tree (排序二叉树的先序遍历)
    如何从 100 亿 URL 中找出相同的 URL?
    Tomcat源码分析 | 一文详解生命周期机制Lifecycle
    SqlSession与SqlSessionFactory到底是什么关系?
    spring boot-jpa整合QueryDSL来简化复杂操作
    EasyExcel读写Excel
    如何将List集合中相同属性的对象合并
    @Data 注解引出的 lombok
    MySQL配置连接
    Django创建
  • 原文地址:https://www.cnblogs.com/hellxz/p/8744393.html
Copyright © 2011-2022 走看看