WebMvcConfigurer配置类是Spring内部的一种配置方式。采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制
自定义一些Handler、Interceptor、ViewResolver、MessageConverter

常用方法

addInterceptors:拦截器

  • addInterceptor:一个实现HandlerInterceptor接口的拦截器实例
  • addPathPatterns:设置拦截器的过来路径规则
  • excludePathPatterns:设置不需要拦截的过滤规则

    1. @Override
    2. public void addInterceptors(InterceptorRegistry registry) {
    3. registry.addInterceptor(new TestInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin","/emp/login","/js/**","/css/**","/images/**");
    4. super.addInterceptors(registry);
    5. }

    addViewControllers:页面跳转

    重写addViewControllers方法,并不会覆盖WebMvcAutoConfiguration(Springboot自动配置)中的addViewControllers(此方法中,Spring Boot将“/“映射至index.html
    这意味着自定义配置和Spring Boot的自动配置同时生效

    1. @Override
    2. public void addViewControllers(ViewControllerRegistry registry) {
    3. registry.addViewController("/toLogin").setViewName("login");
    4. super.addViewControllers(registry);
    5. }

    addResourceHandlers:静态资源

  • 自定义静态资源映射目录

  • addResoureHandler:指的是对外暴露的访问路径
  • addResorceLocations:指的是内部文件访问的目录
    1. @Configuration
    2. public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer {
    3. /**
    4. * 配置静态访问资源
    5. * @param registry
    6. */
    7. @Override
    8. public void addResourceHandlers(ResourceHandlerRegistry registry) {
    9. registry.addResourceHandler("/my/**").addResourceLocations("classpath:/my/");
    10. }
    11. }

    configureDefaultServletHandling:默认静态资源处理器

    注册一个默认的Handler:DefaultServletHttpRequestHandler
    这个Handler也是用来处理静态文件的,会尝试映射/
    这个用来处理DispatcherServerlt情况下导致web根目录下的文件访问不到
    1. @Override
    2. public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    3. configurer.enable();
    4. configurer.enable("defaultServletName");
    5. }

    addCorsMappings:跨域

    1. @Override
    2. public void addCorsMappings(CorsRegistry registry) {
    3. super.addCorsMappings(registry);
    4. registry.addMapping("/cors/**")
    5. .allowedHeaders("*")
    6. .allowedMethods("POST","GET")
    7. .allowedOrigins("*");
    8. }

    configureMessageConverters:信息转换器

    ```java

/**

  • 消息内容转换配置
    • 配置fastJson返回json转换
    • @param converters */ @Override public void configureMessageConverters(List> converters) { //调用父类的配置 super.configureMessageConverters(converters); //创建fastJson消息转换器 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); //创建配置类 FastJsonConfig fastJsonConfig = new FastJsonConfig(); //修改配置返回内容的过滤 fastJsonConfig.setSerializerFeatures(
      1. SerializerFeature.DisableCircularReferenceDetect,
      2. SerializerFeature.WriteMapNullValue,
      3. SerializerFeature.WriteNullStringAsEmpty
      ); fastConverter.setFastJsonConfig(fastJsonConfig); //将fastjson添加到视图消息转换器列表内 converters.add(fastConverter);

} ```