使用多个Spring WebMvcConfigurerAdapter,如何控制配置类的顺序?



使用 2 种配置,在不同的 jar 文件中,我想控制拦截器注册的顺序。一个拦截器可能依赖于另一个拦截器设置的数据。

我已经尝试了@Order addInterceptors方法。

@Configuration
public class PipelineConfig extends WebMvcConfigurerAdapter {
@Autowired
@Qualifier("Audit")
HandlerInterceptor auditInterceptor;
public PipelineConfig() {
}
@Order(2)
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.auditInterceptor);
}
}

@Configuration
public class ExecutionPipelineConfig extends WebMvcConfigurerAdapter {
@Autowired
@Qualifier("ExecutionContext")
HandlerInterceptor executionContextInterceptor;
public ExecutionPipelineConfig() {
}
@Order(1)
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.executionContextInterceptor);
}
}

spring 框架文档 [ http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/] 指定@Order用于:

  • 对集合中的实例进行排序
  • 排序执行侦听器
  • @Configuration元素(弹簧框架4.2+)

如果您的 spring 版本>4.2,则可以在类级别为您的配置应用@Order注释。

例如:

@Configuration
@Order(2)
public class PipelineConfig extends WebMvcConfigurerAdapter {

此外,此 coudld 是用于聚合@Configuration文件(http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch04s03.html)的@Import注释的用例

另一方面,如果您的拦截器之一可能依赖于数据/豆类,则可以使用@DependsOn("beanName")注释。

最新更新