2016-12-07 7 views
4

С двумя конфигурациями в разных файлах jar я хотел бы контролировать порядок регистрации перехватчика. Один перехватчик потенциально зависит от данных, установленных другим.С несколькими Spring WebMvcConfigurerAdapter, как я могу контролировать порядок классов конфигурации?

Я пробовал @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); 
    } 
} 

ответ

4

Документация пружинный каркас [http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/] указывает, что @Order используется для:

  • случаев упорядочения в коллекции
  • заказа executionListeners
  • @Configuration элементы (весна fr работа в целом 4.2+)

Аннотации @Order могут быть применены в вашем корпусе на уровне класса для ваших конфигураций, если ваша весенняя версия> 4.2.

Например:

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

Также этот coudld стать UseCase для аннотирования @Import для объединения @Configuration файлов (http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch04s03.html)

Если, с другой стороны, один из ваших перехватчиков потенциально полагаться на данных/компонентах вы можете использовать аннотацию @DependsOn("beanName").

+0

Фантастический ответ. Охватывает все лаконично, включая версию gotcha. – Interlated