Spring配置中的MappedInterceptor顺序

时间:2016-12-09 13:21:54

标签: java spring spring-mvc spring-data

我有这个配置......

@Configuration
@EnableAutoConfiguration
@EnableTransactionManagement
@ComponentScan
@EntityScan(basePackageClasses = {Jsr310JpaConverters.class, MyEntity.class})
public class ApplicationConfig extends WebMvcConfigurerAdapter {

    @Bean
    public MappedInterceptor correlationIdMappedInterceptor() {
        return new MappedInterceptor(new String[] {"/**"}, new CorrelationIdInterceptor());
    }

    @Bean
    public MappedInterceptor loggingMappedInterceptor() {
        return new MappedInterceptor(new String[] {"/**"}, new LoggingInterceptor());
    }

    // More config...
}

...我希望确保correlationIdMappedInterceptor始终在 loggingMappedInterceptor之前执行

我有一些@RestController s AND @RepositoryRestResource s(或CrudRepository),我希望我的拦截器可以兼顾两者。我试过压倒:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new MappedInterceptor(new String[] {"/**"}, new CorrelationIdInterceptor()));
    registry.addInterceptor(new MappedInterceptor(new String[] {"/**"}, new LoggingInterceptor()));
}

完成这项工作,但仅适用于@RestController

我尝试@Order,在这种情况下绝对没有。

我尝试了@DependsOn(),它似乎成功地控制了用于注入@Bean的命令,但似乎无论我的bean是使用这种策略注入的顺序,我的拦截器都会被调用以相同的顺序。

我到目前为止找到的唯一方法是我的工厂方法在我的配置类中出现的顺序。事实上,目前所有的东西都是按原样运作的。但这很难看,我无法确定我的项目中的任何人都不会改变配置中方法的顺序......我不想依赖于此。这有点奇怪。

有什么想法吗?

0 个答案:

没有答案