SpringBoot8-Spring MVC-Spring MVC基本配置 SpringBoot8-Spring MVC-Spring MVC基本配置

SpringBoot8-Spring MVC-Spring MVC基本配置

        Spring MVC的定制配置需要我们的配置类继承一个WebMvcConfigurerAdapter类,并在此类使用@EnableWebMvc注解,并开启对Spring MVC的配置支持,这样我们就可以重写这个类的方法,完成我们的常用配置。

        我们将前面的MyMvcConfig配置类继承WebMvcConfigurerAdapter。下面没有特别说明,关于配置的相关内容都在MyMvcConfig里编写。


一:静态资源映射

    程序的静态文件(js,css,图片)等需要直接访问,这时我们可以在配置里重写addResourceHandlers方法来实现。

     示例:

     1,添加静态资源

      我们在src/main/resource建立assets/js目录,并复制一个jquery的js文件放置在此目录,如下:



   配置代码如下:

[java] view plain copy
  1. package jack.springmvc.config;  
  2.   
  3. import org.springframework.context.annotation.Bean;  
  4. import org.springframework.context.annotation.ComponentScan;  
  5. import org.springframework.context.annotation.Configuration;  
  6. import org.springframework.web.servlet.config.annotation.EnableWebMvc;  
  7. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;  
  8. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;  
  9. import org.springframework.web.servlet.view.InternalResourceViewResolver;  
  10. import org.springframework.web.servlet.view.JstlView;  
  11.   
  12. /** 
  13.  * Created by jack on 2017/7/16. 
  14.  */  
  15. @Configuration  
  16. @EnableWebMvc   //开启Spring MVC支持,若无此句,重写WebMvcConfigurerAdapter方法无效  
  17. @ComponentScan("jack.springmvc")  
  18. //继承WebMvcConfigurerAdapter类,重写其方法可对Spring MVC进行配置  
  19. public class MyMvcConfig extends WebMvcConfigurerAdapter{  
  20.     @Bean  
  21.     public InternalResourceViewResolver viewResolver(){  
  22.         InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();  
  23.         //viewResolver.setPrefix("/WEB-INF/classes/views/");  
  24.         viewResolver.setPrefix("/WEB-INF/classes/views/");  
  25.         viewResolver.setSuffix(".jsp");  
  26.         viewResolver.setViewClass(JstlView.class);  
  27.         return  viewResolver;  
  28.     }  
  29.   
  30.     @Override  
  31.     public void addResourceHandlers(ResourceHandlerRegistry registry) {  
  32.         //super.addResourceHandlers(registry);  
  33.         //addResourceLocations指的是文件放置的目录,addResourceHandler指的是对外暴露的访问路径  
  34.         registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");  
  35.     }  
  36. }  


二:拦截器配置

      拦截器(Interceptor)实现对每一个请求前后进行相关的业务处理,类似于Servlet的Filter。

      可让普通的Bean实现HanlderInterceptor接口或者继承HandlerInterceptorAdapter类来实现自定义拦截器。

      通过重写WebMvcConfigurerAdapter的addInterceptors方法来注册自定义拦截器,下面演示一个简单拦截器的开发和配置,业务含义为计算每一次的处理时间。

      示例:

编写拦截器代码:

[java] view plain copy
  1. package jack.springmvc.interceptor;  
  2.   
  3. import org.springframework.web.servlet.ModelAndView;  
  4. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. /** 
  10.  * Created by jack on 2017/7/24. 
  11.  */  
  12. //继承HandlerInterceptorAdapter类来实现自定义拦截器  
  13. public class DemoInterceptor extends HandlerInterceptorAdapter{  
  14.     /** 
  15.      * 重写preHandle方法,在请求发生之前执行 
  16.      * @param request 
  17.      * @param response 
  18.      * @param handler 
  19.      * @return 
  20.      * @throws Exception 
  21.      */  
  22.     @Override  
  23.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  24.         //return super.preHandle(request, response, handler);  
  25.         long startTime = System.currentTimeMillis();  
  26.         request.setAttribute("startTime",startTime);  
  27.         return true;  
  28.     }  
  29.   
  30.     /** 
  31.      * 重写postHandle方法,在请求完成之后执行 
  32.      * @param request 
  33.      * @param response 
  34.      * @param handler 
  35.      * @param modelAndView 
  36.      * @throws Exception 
  37.      */  
  38.     @Override  
  39.     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {  
  40.         //super.postHandle(request, response, handler, modelAndView);  
  41.         long startTime = (long) request.getAttribute("startTime");  
  42.         request.removeAttribute("startTime");  
  43.         long endTime = System.currentTimeMillis();  
  44.         System.out.println("本次请求处理时间为:"+new Long(endTime-startTime)+"ms");  
  45.         request.setAttribute("handlingTime",endTime-startTime);  
  46.     }  
  47. }  


配置拦截器,配置拦截器的Bean,重写addInterceptors,注册拦截器,代码如下:

[java] view plain copy
  1. package jack.springmvc.config;  
  2.   
  3. import jack.springmvc.interceptor.DemoInterceptor;  
  4. import org.springframework.context.annotation.Bean;  
  5. import org.springframework.context.annotation.ComponentScan;  
  6. import org.springframework.context.annotation.Configuration;  
  7. import org.springframework.web.servlet.config.annotation.EnableWebMvc;  
  8. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;  
  9. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;  
  10. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;  
  11. import org.springframework.web.servlet.view.InternalResourceViewResolver;  
  12. import org.springframework.web.servlet.view.JstlView;  
  13.   
  14. /** 
  15.  * Created by jack on 2017/7/16. 
  16.  */  
  17. @Configuration  
  18. @EnableWebMvc   //开启Spring MVC支持,若无此句,重写WebMvcConfigurerAdapter方法无效  
  19. @ComponentScan("jack.springmvc")  
  20. //继承WebMvcConfigurerAdapter类,重写其方法可对Spring MVC进行配置  
  21. public class MyMvcConfig extends WebMvcConfigurerAdapter{  
  22.   
  23.     /** 
  24.      * 配置拦截器的Bean 
  25.      * @return 
  26.      */  
  27.     @Bean  
  28.     public DemoInterceptor demoInterceptor(){  
  29.         return new DemoInterceptor();  
  30.     }  
  31.   
  32.     /** 
  33.      * c重写addInterceptors方法,注册拦截器 
  34.      * @param registry 
  35.      */  
  36.     @Override  
  37.     public void addInterceptors(InterceptorRegistry registry) {  
  38.         //super.addInterceptors(registry);  
  39.         registry.addInterceptor(demoInterceptor());  
  40.     }  
  41.   
  42.     @Bean  
  43.     public InternalResourceViewResolver viewResolver(){  
  44.         InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();  
  45.         //viewResolver.setPrefix("/WEB-INF/classes/views/");  
  46.         viewResolver.setPrefix("/WEB-INF/classes/views/");  
  47.         viewResolver.setSuffix(".jsp");  
  48.         viewResolver.setViewClass(JstlView.class);  
  49.         return  viewResolver;  
  50.     }  
  51.   
  52.     @Override  
  53.     public void addResourceHandlers(ResourceHandlerRegistry registry) {  
  54.         //super.addResourceHandlers(registry);  
  55.         //addResourceLocations指的是文件放置的目录,addResourceHandler指的是对外暴露的访问路径  
  56.         registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");  
  57.     }  
  58. }  

在浏览器输入:http://localhost:8080/index

输出如下:



三:@ControllerAdvice

      通过@ControllerAdvice,我们可以将对于控制器的全局配置放置在同一个位置,注解了 @ControllerAdvice的类的方法可使用@ExceptionHandler,@InitBinder,@ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。

     @ExceptionHandler:用于全局处理控制器的异常

     @InitBinder:用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。

     @ModelAttribute:@ModelAttribute本来的作用是绑定键值对到Model里,此处是让全局的@RequestMapping都能获得此处设置的键值对。

     下面演示使用@ExceptionHandler处理全局异常,更人性化的将异常输出给用户。

    示例:

1)定制ControllerAdvice

[java] view plain copy
  1. package jack.springmvc.advice;  
  2.   
  3. import org.springframework.ui.Model;  
  4. import org.springframework.web.bind.WebDataBinder;  
  5. import org.springframework.web.bind.annotation.ControllerAdvice;  
  6. import org.springframework.web.bind.annotation.ExceptionHandler;  
  7. import org.springframework.web.bind.annotation.InitBinder;  
  8. import org.springframework.web.bind.annotation.ModelAttribute;  
  9. import org.springframework.web.context.request.WebRequest;  
  10. import org.springframework.web.servlet.ModelAndView;  
  11.   
  12.   
  13. /** 
  14.  * Created by jack on 2017/7/24. 
  15.  */  
  16. //@ControllerAdvice声明一个控制器建言,@ControllerAdvice组合了@Component注解,所以自动注册为Spring的bean  
  17. @ControllerAdvice  
  18. public class ExceptionHandlerAdvice {  
  19.     /** 
  20.      * @ExceptionHandler在此处定义全局处理,通过@ExceptionHandler的value属性可过滤拦截的条件, 
  21.      * 再此我们可以看出我们拦截所有的Exception 
  22.      * @param exception 
  23.      * @param request 
  24.      * @return 
  25.      */  
  26.     @ExceptionHandler(value = Exception.class)  
  27.     public ModelAndView exception(Exception exception, WebRequest request){  
  28.         ModelAndView modelAndView = new ModelAndView("error");//error页面  
  29.         modelAndView.addObject("errorMessage",exception.getMessage());  
  30.         return modelAndView;  
  31.     }  
  32.   
  33.   
  34.     /** 
  35.      * 此处使用@ModelAttribute注解将键值对添加到全局,所有注解了@RequestMapping的方法可获得此键值对 
  36.      * @param model 
  37.      */  
  38.     @ModelAttribute  
  39.     public void addAttributes(Model model){  
  40.         model.addAttribute("msg""额外信息");  
  41.     }  
  42.   
  43.     /** 
  44.      * 通过@InitBinder注解定制WebDataBinder 
  45.      * @param webDataBinder 
  46.      */  
  47.     @InitBinder  
  48.     public void initBinder(WebDataBinder webDataBinder){  
  49.         //此处演示忽略request参数的id  
  50.         webDataBinder.setDisallowedFields("id");  
  51.     }  
  52.   
  53. }  

2)演示控制器

[java] view plain copy
  1. package jack.springmvc.controller;  
  2.   
  3. import jack.springmvc.domain.DemoObj;  
  4. import org.springframework.stereotype.Controller;  
  5. import org.springframework.web.bind.annotation.ModelAttribute;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7.   
  8. /** 
  9.  * Created by jack on 2017/7/24. 
  10.  */  
  11. @Controller  
  12. public class AdviceController {  
  13.     @RequestMapping("/advice")  
  14.     public String getSomething(@ModelAttribute("msg") String msg, DemoObj obj){  
  15.         throw new IllegalArgumentException("非常抱歉,参数有误/" + "来自@ModelAttribute:" + msg);  
  16.     }  
  17. }  

3)异常展示页面

    在src/main/resources/views下,新建error.jsp,内容如下:

[plain] view plain copy
  1. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>  
  3. <html>  
  4. <head>  
  5.     <meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8" >  
  6.     <title>@ControllerAdvice Demo</title>  
  7. </head>  
  8. <body>  
  9. <pre>  
  10.     ${errorMessage}  
  11. </pre>  
  12. </body>  
  13. </html>  

4)运行

 在浏览器输入:http://localhost:8080/advice?id=1&name=xx,页面显示如下所示:





   其中DemoObj的id被过滤掉了。且获得了@ModelAttribute的msg信息


四:其他配置

1,快捷的ViewController

   在前面我们配置页面转向的时候使用了下面的代码:

[java] view plain copy
  1. @RequestMapping(value = "/index")  
  2.  public String hello(){  
  3.      //通过MyMvcConfig里面的配置,通过ViewResolver的Bean配置,返回值为index,  
  4.      // 说明我们的页面存放的路径为/classes/views/index.jsp  
  5.      return "index";  
  6.  }  

  此处无任何业务处理,只是简单的页面转向,写了至少三行代码,在实际开发中会涉及大量的这样页面转向,若都这样写会很麻烦,我们可以通过在配置中重写addViewControllers来简化配置:

[java] view plain copy
  1. package jack.springmvc.config;  
  2.   
  3. import jack.springmvc.interceptor.DemoInterceptor;  
  4. import org.springframework.context.annotation.Bean;  
  5. import org.springframework.context.annotation.ComponentScan;  
  6. import org.springframework.context.annotation.Configuration;  
  7. import org.springframework.web.servlet.config.annotation.*;  
  8. import org.springframework.web.servlet.view.InternalResourceViewResolver;  
  9. import org.springframework.web.servlet.view.JstlView;  
  10.   
  11. /** 
  12.  * Created by jack on 2017/7/16. 
  13.  */  
  14. @Configuration  
  15. @EnableWebMvc   //开启Spring MVC支持,若无此句,重写WebMvcConfigurerAdapter方法无效  
  16. @ComponentScan("jack.springmvc")  
  17. //继承WebMvcConfigurerAdapter类,重写其方法可对Spring MVC进行配置  
  18. public class MyMvcConfig extends WebMvcConfigurerAdapter{  
  19.   
  20.     /** 
  21.      * 配置拦截器的Bean 
  22.      * @return 
  23.      */  
  24.     @Bean  
  25.     public DemoInterceptor demoInterceptor(){  
  26.         return new DemoInterceptor();  
  27.     }  
  28.   
  29.     /** 
  30.      * c重写addInterceptors方法,注册拦截器 
  31.      * @param registry 
  32.      */  
  33.     @Override  
  34.     public void addInterceptors(InterceptorRegistry registry) {  
  35.         //super.addInterceptors(registry);  
  36.         registry.addInterceptor(demoInterceptor());  
  37.     }  
  38.   
  39.     @Bean  
  40.     public InternalResourceViewResolver viewResolver(){  
  41.         InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();  
  42.         //viewResolver.setPrefix("/WEB-INF/classes/views/");  
  43.         viewResolver.setPrefix("/WEB-INF/classes/views/");  
  44.         viewResolver.setSuffix(".jsp");  
  45.         viewResolver.setViewClass(JstlView.class);  
  46.         return  viewResolver;  
  47.     }  
  48.   
  49.     @Override  
  50.     public void addResourceHandlers(ResourceHandlerRegistry registry) {  
  51.         //super.addResourceHandlers(registry);  
  52.         //addResourceLocations指的是文件放置的目录,addResourceHandler指的是对外暴露的访问路径  
  53.         registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");  
  54.     }  
  55.   
  56.     /**  
  57.      * 统一处理没啥业务逻辑处理的controller请求,实现代码的简洁  
  58.      * @param registry  
  59.      */  
  60.     @Override  
  61.     public void addViewControllers(ViewControllerRegistry registry) {  
  62.         //super.addViewControllers(registry);  
  63.         registry.addViewController("/index").setViewName("/index");  
  64.     }  
  65. }  


注释掉之前处理/index的controller,重启服务器,输入http://localhost:8080/index进行访问,发现和之前是一样的结果。把没有业务的controller统一进行处理,代码根据简洁,管理更加集中了。


2,路径匹配参数配置

       在spring mvc中,路径参数如果带“.”的话,“.”后面的值将被忽略,例如访问:http://localhost:8080/anno/pathvar/xx.yy,此时“.”后面的yy被忽略了,如下所示:




通过重写configurePathMatch方法可忽略"."后面的参数,代码如下:

[java] view plain copy
  1. @Override  
  2.     public void configurePathMatch(PathMatchConfigurer configurer) {  
  3.         //super.configurePathMatch(configurer);  
  4.         configurer.setUseSuffixPatternMatch(false);  
  5.     }  


目前spring mvc配置的完整代码如下:

[java] view plain copy
  1. package jack.springmvc.config;  
  2.   
  3. import jack.springmvc.interceptor.DemoInterceptor;  
  4. import org.springframework.context.annotation.Bean;  
  5. import org.springframework.context.annotation.ComponentScan;  
  6. import org.springframework.context.annotation.Configuration;  
  7. import org.springframework.web.servlet.config.annotation.*;  
  8. import org.springframework.web.servlet.view.InternalResourceViewResolver;  
  9. import org.springframework.web.servlet.view.JstlView;  
  10.   
  11. /** 
  12.  * Created by jack on 2017/7/16. 
  13.  */  
  14. @Configuration  
  15. @EnableWebMvc   //开启Spring MVC支持,若无此句,重写WebMvcConfigurerAdapter方法无效  
  16. @ComponentScan("jack.springmvc")  
  17. //继承WebMvcConfigurerAdapter类,重写其方法可对Spring MVC进行配置  
  18. public class MyMvcConfig extends WebMvcConfigurerAdapter{  
  19.   
  20.     /** 
  21.      * 配置拦截器的Bean 
  22.      * @return 
  23.      */  
  24.     @Bean  
  25.     public DemoInterceptor demoInterceptor(){  
  26.         return new DemoInterceptor();  
  27.     }  
  28.   
  29.     /** 
  30.      * c重写addInterceptors方法,注册拦截器 
  31.      * @param registry 
  32.      */  
  33.     @Override  
  34.     public void addInterceptors(InterceptorRegistry registry) {  
  35.         //super.addInterceptors(registry);  
  36.         registry.addInterceptor(demoInterceptor());  
  37.     }  
  38.   
  39.     @Bean  
  40.     public InternalResourceViewResolver viewResolver(){  
  41.         InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();  
  42.         //viewResolver.setPrefix("/WEB-INF/classes/views/");  
  43.         viewResolver.setPrefix("/WEB-INF/classes/views/");  
  44.         viewResolver.setSuffix(".jsp");  
  45.         viewResolver.setViewClass(JstlView.class);  
  46.         return  viewResolver;  
  47.     }  
  48.   
  49.     @Override  
  50.     public void addResourceHandlers(ResourceHandlerRegistry registry) {  
  51.         //super.addResourceHandlers(registry);  
  52.         //addResourceLocations指的是文件放置的目录,addResourceHandler指的是对外暴露的访问路径  
  53.         registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");  
  54.     }  
  55.   
  56.     /**  
  57.      * 统一处理没啥业务逻辑处理的controller请求,实现代码的简洁  
  58.      * @param registry  
  59.      */  
  60.     @Override  
  61.     public void addViewControllers(ViewControllerRegistry registry) {  
  62.         //super.addViewControllers(registry);  
  63.         registry.addViewController("/index").setViewName("/index");  
  64.     }  
  65.   
  66.     @Override  
  67.     public void configurePathMatch(PathMatchConfigurer configurer) {  
  68.         //super.configurePathMatch(configurer);  
  69.         configurer.setUseSuffixPatternMatch(false);  
  70.     }  
  71. }  


重启tomcat,在访问http://localhost:8080/anno/pathvar/xx.yy,就可以接受"."后面的yy了,如下:


3,更多配置

    更多配置可以查看WebMvcConfigurerAdapter类的api。因其是WebMvcConfigurer接口的实现,所以WebMvcConfigurer的api内的也可以用来MVC。下面看看WebMvcConfigurerAdapterWebMvcConfigurer的源码。

WebMvcConfigurerAdapter

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


WebMvcConfigurer

[java] view plain copy
  1. //  
  2. // Source code recreated from a .class file by IntelliJ IDEA  
  3. // (powered by Fernflower decompiler)  
  4. //  
  5.   
  6. package org.springframework.web.servlet.config.annotation;  
  7.   
  8. import java.util.List;  
  9. import org.springframework.format.FormatterRegistry;  
  10. import org.springframework.http.converter.HttpMessageConverter;  
  11. import org.springframework.validation.MessageCodesResolver;  
  12. import org.springframework.validation.Validator;  
  13. import org.springframework.web.method.support.HandlerMethodArgumentResolver;  
  14. import org.springframework.web.method.support.HandlerMethodReturnValueHandler;  
  15. import org.springframework.web.servlet.HandlerExceptionResolver;  
  16. import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;  
  17. import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;  
  18. import org.springframework.web.servlet.config.annotation.CorsRegistry;  
  19. import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;  
  20. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;  
  21. import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;  
  22. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;  
  23. import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;  
  24. import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;  
  25.   
  26. public interface WebMvcConfigurer {  
  27.     void configurePathMatch(PathMatchConfigurer var1);  
  28.   
  29.     void configureContentNegotiation(ContentNegotiationConfigurer var1);  
  30.   
  31.     void configureAsyncSupport(AsyncSupportConfigurer var1);  
  32.   
  33.     void configureDefaultServletHandling(DefaultServletHandlerConfigurer var1);  
  34.   
  35.     void addFormatters(FormatterRegistry var1);  
  36.   
  37.     void addInterceptors(InterceptorRegistry var1);  
  38.   
  39.     void addResourceHandlers(ResourceHandlerRegistry var1);  
  40.   
  41.     void addCorsMappings(CorsRegistry var1);  
  42.   
  43.     void addViewControllers(ViewControllerRegistry var1);  
  44.   
  45.     void configureViewResolvers(ViewResolverRegistry var1);  
  46.   
  47.     void addArgumentResolvers(List<HandlerMethodArgumentResolver> var1);  
  48.   
  49.     void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> var1);  
  50.   
  51.     void configureMessageConverters(List<HttpMessageConverter<?>> var1);  
  52.   
  53.     void extendMessageConverters(List<HttpMessageConverter<?>> var1);  
  54.   
  55.     void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);  
  56.   
  57.     void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);  
  58.   
  59.     Validator getValidator();  
  60.   
  61.     MessageCodesResolver getMessageCodesResolver();  
  62. }  





猜你喜欢

转载自blog.csdn.net/zxl2016/article/details/80696839
今日推荐