/ / Con varios Spring WebMvcConfigurerAdapter, ¿cómo puedo controlar el orden de las clases de configuración? - spring-mvc, interceptor

Con varios Spring WebMvcConfigurerAdapter, ¿cómo puedo controlar el orden de las clases de configuración? - spring-mvc, interceptor

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 № 1

La 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.