Spring Boot 使用Filter

Spring Boot 使用Filter

Filter类

@Component
@WebFilter(urlPatterns = "/*")
@Order(Ordered.HIGHEST_PRECEDENCE) // 设置最高优先级
@Slf4j
public class GlobalFirstFilter implements Filter {


    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException, IOException {

        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        // 会在Spring boot Security之前执行
        log.info("Request URI: {}", httpRequest.getRequestURI());

        // 必须调用chain.doFilter()继续处理
        chain.doFilter(request, response);
    }
}

💡@Component 和 @ServletComponentScan 「通常放在Application类上面」不用同时使用,否则会注册两次。

# Spring Boot 使用Filter

### Filter类

```java
@Component
@WebFilter(urlPatterns = "/*")
@Order(Ordered.HIGHEST_PRECEDENCE) // 设置最高优先级
@Slf4j
public class GlobalFirstFilter implements Filter {


    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException, IOException {

        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        // 会在Spring boot Security之前执行
        log.info("Request URI: {}", httpRequest.getRequestURI());

        // 必须调用chain.doFilter()继续处理
        chain.doFilter(request, response);
    }
}
```

💡@Component 和 @ServletComponentScan 「通常放在Application类上面」不用同时使用,否则会注册两次。