使用@AutoConfigureAfter(WebMvcAutoConfiguration.class)和注释驱动时无法调用拦截器

时间:2018-04-20 09:14:49

标签: java spring spring-boot interceptor spring-annotations

在我的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的实现)。

0 个答案:

没有答案