WebMvcConfigurer配置类是Spring内部的一种配置方式。采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制
自定义一些Handler、Interceptor、ViewResolver、MessageConverter
常用方法
addInterceptors:拦截器
- addInterceptor:一个实现HandlerInterceptor接口的拦截器实例
- addPathPatterns:设置拦截器的过来路径规则
excludePathPatterns:设置不需要拦截的过滤规则
@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new TestInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin","/emp/login","/js/**","/css/**","/images/**");super.addInterceptors(registry);}
addViewControllers:页面跳转
重写addViewControllers方法,并不会覆盖WebMvcAutoConfiguration(Springboot自动配置)中的addViewControllers(此方法中,Spring Boot将“/“映射至index.html
这意味着自定义配置和Spring Boot的自动配置同时生效@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/toLogin").setViewName("login");super.addViewControllers(registry);}
addResourceHandlers:静态资源
自定义静态资源映射目录
- addResoureHandler:指的是对外暴露的访问路径
- addResorceLocations:指的是内部文件访问的目录
@Configurationpublic class MyWebMvcConfigurerAdapter implements WebMvcConfigurer {/*** 配置静态访问资源* @param registry*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/my/**").addResourceLocations("classpath:/my/");}}
configureDefaultServletHandling:默认静态资源处理器
注册一个默认的Handler:DefaultServletHttpRequestHandler
这个Handler也是用来处理静态文件的,会尝试映射/
这个用来处理DispatcherServerlt情况下导致web根目录下的文件访问不到@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();configurer.enable("defaultServletName");}
addCorsMappings:跨域
@Overridepublic void addCorsMappings(CorsRegistry registry) {super.addCorsMappings(registry);registry.addMapping("/cors/**").allowedHeaders("*").allowedMethods("POST","GET").allowedOrigins("*");}
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(
); fastConverter.setFastJsonConfig(fastJsonConfig); //将fastjson添加到视图消息转换器列表内 converters.add(fastConverter);SerializerFeature.DisableCircularReferenceDetect,SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty
} ```
