升级springBoot 2后,使用 WebMvcConfigurer 添加拦截器
当 springBoot 的版本从1.x 升级到 2 之后WebMvcConfigurerAdapter就发现这个抽象类已经过时了
源码中的解释
升级后的springBoot,使用了java8的特性 default
方法,所以直接实现 WebMvcConfigurer
这个接口即可:
/**
* An implementation of {@link WebMvcConfigurer} with empty methods allowing
* subclasses to override only the methods they're interested in.
*
* @author Rossen Stoyanchev
* @since 3.1
* @deprecated as of 5.0 {@link WebMvcConfigurer} has default methods (made
* possible by a Java 8 baseline) and can be implemented directly without the
* need for this adapter
*/
@Deprecated
public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer { ...
旧版本继承WebMvcConfigurerAdapter 的使用方式:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebMvcConf extends WebMvcConfigurerAdapter {
/**
* 自己定义的拦截器类
* @return
*/
@Bean
SysUserLoginInterceptor sysUserLoginInterceptor() {
return new SysUserLoginInterceptor();
}
/**
* 添加拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(sysUserLoginInterceptor());
super.addInterceptors(registry);
}
}
新版本实现WebMvcConfigurer的使用方式:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfg implements WebMvcConfigurer{
/**
* 自己定义的拦截器类
* @return
*/
@Bean
SysUserLoginInterceptor sysUserLoginInterceptor() {
return new SysUserLoginInterceptor();
}
/**
* 添加拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(sysUserLoginInterceptor());
}
}
自定义的拦截器类:
public class SysUserLoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
Object o, Exception e) throws Exception {
}
}
WebMvcConfigurer
这个接口中还有一些其他的常用的功能 通过 default methods
的方式都已经定义,使用时重写需要的方法即可