1 package top.infra.web.servlet.handler;
2
3 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
4 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
5
6 import java.util.Comparator;
7 import java.util.List;
8
9
10
11
12
13 public abstract class OrderedHandlerInterceptorWebMvcConfigureAdapter extends WebMvcConfigurerAdapter {
14
15 private static Comparator<OrderedHandlerInterceptor<?>> comparator() {
16 return Comparator.comparingInt(i -> i.getInterceptor().getOrder());
17 }
18
19 public abstract List<OrderedHandlerInterceptor<?>> addOrderedInterceptors();
20
21 @Override
22 public void addInterceptors(final InterceptorRegistry registry) {
23 final List<OrderedHandlerInterceptor<?>> interceptors = this.addOrderedInterceptors();
24 interceptors
25 .stream()
26 .sorted(comparator())
27 .forEach(i -> registry.addInterceptor(i.getInterceptor()).addPathPatterns(i.getPatterns()));
28 }
29 }