java - SpringBoot 添加自定义的拦截器,却不调用
问题描述
1.问题:
要添加一个自定义处理Token的问题,现在实现了方法,却发现拦截器没有被调用。我是在自定义的HandlerInterceptorAdapter里面重写了preHandle方法。并把这个自定义的HandlerInterceptorAdapter添加到了自定义的WebMvcConfigurerAdapter,在WebMvcConfigurerAdapter添加@Configuration注解,但是却没有被调用!
2.代码:自定义的HandlerInterceptorAdapter的AccessTokenVerifyInterceptor:
@Componentpublic class AccessTokenVerifyInterceptor extends HandlerInterceptorAdapter {private Logger logger = LoggerFactory.getLogger(AccessTokenVerifyInterceptor.class);@Autowired private FFAccessTokenService tokenService;@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// TODO Auto-generated method stublogger.info('AccessToken executing ...');return true;} }
自定义的WebMvcConfigurerAdapter类FFWebMvcConfigurer:
@Configurationpublic class FFWebMvcConfigurer extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) {// TODO Auto-generated method stubregistry.addViewController('/error').setViewName('404.html');registry.setOrder(Ordered.HIGHEST_PRECEDENCE); super.addViewControllers(registry);} @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.setUseSuffixPatternMatch(false); super.configurePathMatch(configurer); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AccessTokenVerifyInterceptor()) .addPathPatterns('/**') .excludePathPatterns('/access-token'); super.addInterceptors(registry); System.out.println('开始开始咯。。。。');} }
3.希望各路大神,帮小弟指点指点,感谢感谢!
问题解答
回答1:/**去掉一个*试试
回答2:在启动类加上@ServletComponentScan
回答3:那你应该把 HandlerInterceptorAdapter 贴出来看看还有就是 2 中那个 @Component 注解 是没有意义的。
回答4:不会啊,按照你的代码写了一个简单的Demo,拦截器是可以调用到的。
@Configurationpublic class FFWebMvcConfigurer extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) {registry.addViewController('/error').setViewName('404.html');registry.setOrder(Ordered.HIGHEST_PRECEDENCE);super.addViewControllers(registry); } @Override public void configurePathMatch(PathMatchConfigurer configurer) {configurer.setUseSuffixPatternMatch(false);super.configurePathMatch(configurer); } @Override public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new AccessTokenVerifyInterceptor()).addPathPatterns('/**').excludePathPatterns('/access-token');super.addInterceptors(registry);System.out.println('开始开始咯。。。。'); }}
public class AccessTokenVerifyInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println('preHandle...');return true; }}
