SpringBoot设置过滤器(Filter)或拦截器(Interceptor)的执行顺序:@Order注解、setOrder()方法

Spring Boot中,过滤器Filter)和拦截器Interceptor)都可以用于对HTTP请求进行预处理后处理,但它们的使用场景和应用方式有所不同。 **过滤器Filter)**: 过滤器主要用于在Web层处理特定的请求,如添加修改请求头、处理预请求逻辑等。在Spring Boot中,你需要在`WebMvcConfigurerAdapter`自定义的`WebMvcConfigurer`接口中配置filter。例如: ```java import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.core.Ordered; public class MyFilterConfig implements WebMvcConfigurer { @Override public void addFilters(FilterRegistrationBean<?> filters) { FilterRegistrationBean<MyFilter> filter = new FilterRegistrationBean<>(); filter.setFilter(new MyFilter()); // 设置过滤器顺序(数字越小优先级越高) filter.setOrder(Ordered.HIGHEST_PRECEDENCE); filters.addFilter(filter); } } ``` 在这里,`MyFilter`是你需要自定义的过滤器类。 **拦截器Interceptor)**: 拦截器则更适合于处理业务逻辑层面的操作,如权限验证、日志记录等。在Spring MVC中,你可以通过`@ControllerAdvice`注解创建全局拦截器者在每个控制器上单独声明。例如: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; @RestController public class MyGlobalInterceptor { private final MyBusinessLogic logic; @Autowired public MyGlobalInterceptor(MyBusinessLogic logic) { this.logic = logic; } @Around("execution(* com.example.controller.*.*(..))") // 匹配所有控制器方法 public Object around(HandlerMethod handlerMethod) throws Exception { // 先进行预处理操作... Object result = handlerMethod.proceed(); // 调用实际方法 // 后处理操作... return result; } } // 者在单个控制器上使用 @RestController public class MySpecificInterceptorController { @ModelAttribute("myInterceptor") public MySpecificInterceptor interceptor() { return new MySpecificInterceptor(); } // 每个方法都会经过这个拦截器 @PostMapping("/someEndpoint") @PreAuthorize("hasRole('ADMIN')") public ResponseEntity<String> handleRequest(@ModelAttribute("myInterceptor") MySpecificInterceptor interceptor) { // ... } } ``` 这里,`MyBusinessLogic`和`MySpecificInterceptor`是你的业务逻辑类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值