spring boot Filter执行顺序
时间: 2025-01-14 13:02:41 AIGC 浏览: 61
### Spring Boot Filter 执行顺序
在Spring Boot应用程序中,`Filter`的执行顺序遵循特定机制。创建责任链之后,各个`Filter`按照其声明的位置被依次调用并处理请求,在这个过程中会利用计数器确保每个`Filter`都能按序执行[^1]。
对于自定义`Filter`来说,可以通过实现`Ordered`接口或使用`@Order`注解指定优先级数值;较低的数值代表较高的优先级,即更早被执行。此外,也可以继承`OncePerRequestFilter`类来保证每次HTTP请求只运行一次过滤逻辑。
下面是一个简单的例子展示如何设置不同优先级:
```java
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(1) // 更高的优先级
public class FirstCustomFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
System.out.println("Executing first custom filter");
filterChain.doFilter(request,response);
}
}
@Component
@Order(2) // 较低的优先级
public class SecondCustomFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
System.out.println("Executing second custom filter");
filterChain.doFilter(request,response);
}
}
```
在这个案例里,由于设置了不同的订单号(`@Order`),因此`FirstCustomFilter`会在`SecondCustomFilter`之前触发。
阅读全文
相关推荐




















