今天在IDEA寫攔截器的時候遇到點困惑,繼承了HandlerInterceptor沒有報錯,我一直認為他會提醒,要重寫方法。如下圖
通過查資料,嗯,終於找到原因來,先來上HandlerInterceptor
接口的源碼
public interface HandlerInterceptor {
default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return true;
}
default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView) throws Exception {
}
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception {
}
}
敲一敲黑板,重點來了
以上是HandlerInterceptor 接口的源碼,可以看到高版本的spring-webmvc jar包中,HandlerInterceptor 接口定義的是默認方法,這是jdk1.8的新特性,也就是說接口中的方法你重寫也可以,不重寫也不會報錯。
所以所這里並不會提醒你重寫,你要自己去手動寫。