鍍金池/ 問答/Java/ springboot2 攔截器無效

springboot2 攔截器無效

在網(wǎng)上找了好多,基本上都一個(gè)樣,按照一步一步來,都是無效,下面是我的配置:

Config:

import com.example.demo.interceptor.OneInterceptor;
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 InterceptorConfig implements WebMvcConfigurer {

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new OneInterceptor()).addPathPatterns("/**");
}

}

OneInterceptor:

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 OneInterceptor implements HandlerInterceptor {

private Logger logger = LoggerFactory.getLogger(OneInterceptor.class);

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
    logger.debug("攔截。。。");
    return false;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
    System.err.println("post");
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    System.err.println("after");
}

}

無論訪問什么路徑都不會走攔截器,
不知道哪里配置錯(cuò)了,求大神解答!

回答
編輯回答
撿肥皂

不知道訪問路徑的時(shí)候會不會打印“攔截。。。”?

上面的OneInterceptor的preHandle方法要返回true才會執(zhí)行下去,加了@Component就不用new了

@Component
public class OneInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
        System.out.println("pre");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
        System.err.println("post");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        System.err.println("after");
    }
}
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    private final OneInterceptor oneInterceptor;

    @Autowired
    public InterceptorConfig(OneInterceptor oneInterceptor) {
        this.oneInterceptor = oneInterceptor;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(oneInterceptor).addPathPatterns("/**");
    }
}
2017年12月7日 04:08
編輯回答
柒喵

你這配置沒問題的,你看看日志有沒有l(wèi)ogger.debug("攔截。。。");
另外,聲明OneInterceptor為組件之后,不需要new,使用的時(shí)候注入就行

2017年10月28日 20:43