在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。
官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport
继承WebMvcConfigurationSupport类:【链接】
https://blog.csdn.net/fmwind/article/details/82832758
/* 拦截器配置 */
void addInterceptors(InterceptorRegistry var1);
/* 视图跳转控制器 */
void addViewControllers(ViewControllerRegistry registry);
/** *静态资源处理**/
void addResourceHandlers(ResourceHandlerRegistry registry);
/* 默认静态资源处理器 */
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
/*** 这里配置视图解析器**/
void configureViewResolvers(ViewResolverRegistry registry);
/* 配置内容裁决的一些选项*/
void configureContentNegotiation(ContentNegotiationConfigurer configurer);
/** 解决跨域问题 **/
public void addCorsMappings(CorsRegistry registry) ;
l addInterceptor:需要一个实现HandlerInterceptor接口的拦截器实例
l addPathPatterns:用于设置拦截器的过滤路径规则;addPathPatterns("/**")对所有请求都拦截
l excludePathPatterns:用于设置不需要拦截的过滤规则
l 拦截器主要用途:进行用户登录状态的拦截,日志的拦截等。
【如上图所述,设置了不需要拦截的过滤规则,开头如果不是adminApi开头的路径直接404送走。不进行请求】
以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurer中的addViewControllers方法即可达到效果了
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/toLogin").setViewName("login");
}
值的指出的是,在这里重写addViewControllers方法,并不会覆盖WebMvcAutoConfiguration(Springboot自动配置)中的addViewControllers(在此方法中,Spring Boot将“/”映射至index.html),这也就意味着自己的配置和Spring Boot的自动配置同时有效,这也是我们推荐添加自己的MVC配置的方式。
比如,我们想自定义静态资源映射目录的话,只需重写addResourceHandlers方法即可。
注:如果继承WebMvcConfigurationSupport类实现配置时必须要重写该方法
addResoureHandler:指的是对外暴露的访问路径
addResourceLocations:指的是内部文件放置的目录
这个方法是用来配置视图解析器的,该方法的参数ViewResolverRegistry 是一个注册器,用来注册你想自定义的视图解析器等。
ViewResolverRegistry 常用的几个方法:https://blog.csdn.net/fmwind/article/details/81235401
SpringBoot【拦截器】WebMvcConfigurer
原文:https://www.cnblogs.com/books148/p/12493488.html