使用2个配置,在不同的jar文件中,我想控制拦截器注册的顺序。一个拦截器可能依赖于另一个拦截器的数据集。
我在addInterceptors方法上试过了@Order。
@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);
}
}
答案 0 :(得分:4)
spring框架文档[http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/]指定@Order
用于:
@Order
注释可以在您的案例级别适用于您的配置,如果您的春季版本> 4.2。
例如:
@Configuration
@Order(2)
public class PipelineConfig extends WebMvcConfigurerAdapter {
此coudld也是@Import注释的用例,用于聚合@Configuration文件(http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch04s03.html)
另一方面,如果您的某个拦截器可能依赖于数据/ bean,则可以使用@DependsOn("beanName")
注释。