版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljk126wy/article/details/83069903
springboot 中没有web.xml 我们无法按照原来定义filter 方式使用我们的自定义filter,我们需要自定义@Configuration 直接的类,并将我们自定义的filter 加入到springboot 的过滤链中。
demo版本说明:
jdk版本:1.8.0_144
springboot版本:2.0.5.RELEASE
1 自定义filter
在这里我们定义一个拦截访问url的filter
package cn.lijunkui.filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UrlFilter implements Filter {
private Logger log = LoggerFactory.getLogger(UrlFilter.class);
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String requestURI = httpServletRequest.getRequestURI();
StringBuffer requestURL = httpServletRequest.getRequestURL();
log.info("requestURI:" +requestURI+" "+"requestURL:"+requestURL);
chain.doFilter(httpServletRequest, response);
}
@Override
public void destroy() {
}
}
2 定义@Configuration 注解的类 并将自定义的filter 加入到过滤链中
package cn.lijunkui.config;
import java.util.ArrayList;
import java.util.List;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import cn.lijunkui.filters.UrlFilter;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean filterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new UrlFilter());
List<String> urlList = new ArrayList<String>();
urlList.add("/*");
registration.setUrlPatterns(urlList);
registration.setName("UrlFilter");
registration.setOrder(1);
return registration;
}
}
3 进行测试
启动spirngboot 项目 通过游览器访问我们的服务
demo总结:springboot中自定义filter 我们需要编写Filter累实现Filter接口 同时 定义 Filter的配置类。配置类需要声明@Configuration注解同时定义声明@Bean的方法。然后将自定义filter添加到FilterRegistrationBean 中即可。