有两种创建SpringBoot 过滤器的方式
一 通过FilterRegistrationBean注册
二 通过@WebFilter注解
1 通过FilterRegistrationBean注册Filter
1.1 创建过滤器RequestLogFilter.java
package com.gcl.filter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
public class RequestLogFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
log.info("RequestLogFilter");
}
}
1.2 创建配置文件注册FilterConf.java
package com.gcl.conf;
import com.gcl.filter.RequestLogFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConf {
@Bean
public FilterRegistrationBean<RequestLogFilter> requestLogFilter() {
FilterRegistrationBean<RequestLogFilter> bean = new FilterRegistrationBean<>();
bean.setFilter(new RequestLogFilter());
bean.setName("request-log-filter");
bean.addUrlPatterns("/*");
return bean;
}
}
2 使用@Webfilter注解创建
2.1 创建RequestLogFilter2.java
package com.gcl.filter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@Slf4j
@Order(1)
@WebFilter(urlPatterns = "/*", filterName = "request-log-filter-2")
public class RequestLog2Filter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
log.info("RequestLog2Filter by WebFilter");
}
}
评论区