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

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

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

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

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

  1. 1 package com.itcast.springboot;
  2. 2
  3. 3 import org.springframework.context.annotation.Configuration;
  4. 4 import org.springframework.web.servlet.HandlerInterceptor;
  5. 5 import org.springframework.web.servlet.ModelAndView;
  6. 6 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  7. 7 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  8. 8
  9. 9 import javax.servlet.http.HttpServletRequest;
  10. 10 import javax.servlet.http.HttpServletResponse;
  11. 11
  12. 12 /**
  13. 13 * @Author : Hellxz
  14. 14 * @Description:自定义拦截器
  15. 15 * @Date : 2018/4/8 12:36
  16. 16 */
  17. 17 @Configuration
  18. 18 public class MyInterceptor extends WebMvcConfigurerAdapter {
  19. 19 /**
  20. 20 * @Author: Hellxz
  21. 21 * @Description: 添加自定义拦截器
  22. 22 * @Date: 2018/4/8 12:39
  23. 23 */
  24. 24 @Override
  25. 25 public void addInterceptors(InterceptorRegistry registry) {
  26. 26 /**
  27. 27 * 自定义handlerInterceptor,匿名内部类,也可以单独提出来一个类
  28. 28 */
  29. 29 HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {
  30. 30 @Override
  31. 31 public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
  32. 32 System.out.println("—————进入拦截器");
  33. 33 return true;
  34. 34 }
  35. 35
  36. 36 @Override
  37. 37 public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
  38. 38 }
  39. 39
  40. 40 @Override
  41. 41 public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
  42. 42 }
  43. 43 };
  44. 44 //将这个handler添加到签名认证拦截器中
  45. 45 registry.addInterceptor(handlerInterceptor);
  46. 46 // 添加拦截uri
  47. 47 // registry.addInterceptor(handlerInterceptor).addPathPatterns("/user/**");
  48. 48 super.addInterceptors(registry);
  49. 49 }
  50. 50
  51. 51 }

 

版权声明:本文为hellxz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hellxz/p/8744393.html