在我的spring启动应用程序中实现拦截器时遇到了一个奇怪的问题,如下所示: 我的应用程序类代码:
@Import(CommonConfig.class)
@EnableAsync
@SpringBootApplication
@EnableSwagger2
@EnableScheduling
@EnableSpringDataWebSupport
@ImportResource({ "classpath:META-INF/applicationContext.xml" })
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class Application extends SpringBootServletInitializer {
private static final Logger LOG = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
.......
................
}
@Bean
public TokenInterceptor intializeTokenInterceptor() {
System.out.println("Adding interceptors");
return new TokenInterceptor();
}
@Bean
public WebMvcConfigurerAdapter adapter() {
return new WebMvcConfigurerAdapter() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
System.out.println("Adding interceptors");
registry.addInterceptor(intializeTokenInterceptor()).addPathPatterns("/**");
super.addInterceptors(registry);
}
};
}
}
在我的应用程序上下文中,我提到了tag(mvc:annotation-driven),因为我需要这个来初始化我的bean类。
现在,如果我通过删除注释驱动标记来测试我的应用程序,我的拦截器就会被调用。但是,如果我保留这个标签,我的拦截器就不会被调用(我相信它会以某种方式覆盖WebMvcAutoConfiguration.class中的WebMvcConfigurerAdapter bean的实现)。