使用多个 Spring WebMvcConfigurerAdapter 如何控制配置 类 的顺序?
With multiple Spring WebMvcConfigurerAdapter how can I control the order of the Configuration classes?
有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);
}
}
spring 框架文档 [http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ ] 指定 @Order
用于:
- 对集合中的实例进行排序
- 排序执行监听器
- @配置元素(spring 框架 4.2+)
如果您的 spring 版本 >4.2.
,则可以在 class 级别为您的配置应用 @Order
注释
例如:
@Configuration
@Order(2)
public class PipelineConfig extends WebMvcConfigurerAdapter {
这也可能是用于聚合@Configuration 文件的@Import 注释的用例(http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch04s03.html)
另一方面,如果您的拦截器可能依赖于 data/beans,您可以使用 @DependsOn("beanName")
注释。
有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);
}
}
spring 框架文档 [http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ ] 指定 @Order
用于:
- 对集合中的实例进行排序
- 排序执行监听器
- @配置元素(spring 框架 4.2+)
如果您的 spring 版本 >4.2.
,则可以在 class 级别为您的配置应用@Order
注释
例如:
@Configuration
@Order(2)
public class PipelineConfig extends WebMvcConfigurerAdapter {
这也可能是用于聚合@Configuration 文件的@Import 注释的用例(http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch04s03.html)
另一方面,如果您的拦截器可能依赖于 data/beans,您可以使用 @DependsOn("beanName")
注释。