스프링 Boot-- 복수 맞춤 인터셉터 (의 HandlerInterceptor)에서 구성 및 실행 순서

실행 순서

 

근원

인터셉터 클래스  

package com.jd.m.tg.interceptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class HandlerInterceptor1 implements HandlerInterceptor {

    private static final Logger LOG= LoggerFactory.getLogger(MyInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        LOG.info("执行拦截器的preHandle方法");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        LOG.info("执行拦截器的postHandle方法");
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        LOG.info("执行拦截器的afterCompletion方法");
    }
}

또 다른 부류의 인터셉터 기반 콘텐츠 및 일관성;

인터셉터 구성 클래스 

package com.jd.m.tg.config;

import com.jd.m.tg.interceptor.HandlerInterceptor1;
import com.jd.m.tg.interceptor.HandlerInterceptor2;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@AllArgsConstructor
public class InterceptorConfig extends WebMvcConfigurerAdapter{

    private MyInterceptor myInterceptor;

    private MyInterceptorTwo myInterceptorTwo;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(HandlerInterceptor1).addPathPatterns("/test/**");
        registry.addInterceptor(HandlerInterceptor2).addPathPatterns("/test/**");
    }
}

SpringMVC의 구성 : 

<!--拦截器 -->
<mvc:interceptors>
    <!--多个拦截器,顺序执行 -->
    <mvc:interceptor>
    <!-- /**表示所有url包括子url路径 -->
        <mvc:mapping path="/**"/>
        <bean class="cn.itcast.ssm.interceptor.HandlerInterceptor1"></bean>
    </mvc:interceptor>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="cn.itcast.ssm.interceptor.HandlerInterceptor2"></bean>
    </mvc:interceptor>
</mvc:interceptors>

운영 결과

com.jd.m.tg.interceptor.HandlerInterceptor2    : 执行拦截器的preHandle方法
2017-12-19 11:18:50.237  INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor1    : 执行拦截器的preHandle方法
2017-12-19 11:18:50.255  INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor1    : 执行拦截器的postHandle方法
2017-12-19 11:18:50.255  INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor2    : 执行拦截器的postHandle方法
2017-12-19 11:18:50.255  INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor1    : 执行拦截器的afterCompletion方法
2017-12-19 11:18:50.255  INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor2    : 执行拦截器的afterCompletion方法

교육 자료

https://www.bilibili.com/video/av47953244?p=45 

참조 기사

https://blog.csdn.net/u012834750/article/details/78840875

https://blog.csdn.net/u012401711/article/details/73741974

출시 1376 원저 · 원 찬양 240 · 전망 330 000 +

추천

출처blog.csdn.net/weixin_43272781/article/details/104222300