springBoot中addInterceptors拦截未生效
时间: 2024-02-05 17:13:07 浏览: 97
如果在Spring Boot中使用拦截器(Interceptor),但是在配置了拦截器后,却发现拦截器并没有生效,可能是以下原因导致的:
1. 拦截器未被注册
在Spring Boot中,要让拦截器生效,需要将其注册到WebMvcConfigurer中。示例代码如下:
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}
```
在上面的代码中,我们将MyInterceptor注册到WebMvcConfigurer中,并指定了拦截的路径为“/**”。
2. 拦截器配置的路径不正确
在使用addPathPatterns()方法指定拦截路径时,一定要确保路径配置正确。如果路径配置错误,拦截器就无法生效。
3. 拦截器的顺序问题
在多个拦截器的情况下,拦截器的执行顺序可能会影响拦截器的生效情况。可以通过实现Ordered接口或在WebMvcConfigurer中使用addInterceptor()方法传入order参数来指定拦截器的执行顺序。示例代码如下:
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor1 myInterceptor1;
@Autowired
private MyInterceptor2 myInterceptor2;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor1).addPathPatterns("/**").order(1);
registry.addInterceptor(myInterceptor2).addPathPatterns("/**").order(2);
}
}
```
在上面的代码中,我们指定了MyInterceptor1先于MyInterceptor2执行。
4. 拦截器被忽略
有些情况下,拦截器可能会被忽略掉,例如静态资源的访问、登录等请求。可以通过配置WebMvcConfigurer的addResourceHandlers()方法或者自定义Filter来解决该问题。
阅读全文