Con 2 configuraciones, en diferentes archivos jar me gustaría controlar el orden de registro de interceptor. Un interceptor se basa potencialmente en el conjunto de datos del otro.
He intentado @Order en el método 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);
}
}
Y
@Configuration
public class ExecutionPipelineConfig extends WebMvcConfigurerAdapter {
@Autowired
@Qualifier("ExecutionContext")
HandlerInterceptor executionContextInterceptor;
public ExecutionPipelineConfig() {
}
@Order(1)
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.executionContextInterceptor);
}
}
Respuestas
4 para la respuesta № 1La documentación del marco de primavera [ http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ ] especifica que @Order
se utiliza para :
- ordenando instancias en una colección
- orden de ejecución
- Elementos de configuración @ (marco de primavera 4.2+)
los @Order
la anotación se puede aplicar en su caso a nivel de clase para sus configuraciones si su versión de primavera> 4.2.
Por ejemplo:
@Configuration
@Order(2)
public class PipelineConfig extends WebMvcConfigurerAdapter {
También puede ser un caso de uso para la anotación @Import para agregar archivos de configuración @ (http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch04s03.html)
Si, por otro lado, uno de sus interceptores puede depender de datos / beans, puede usar el @DependsOn("beanName")
anotación.