前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 的过滤器 Filter 配置

SpringBoot 的过滤器 Filter 配置

作者头像
北漂的我
发布2020-10-26 17:18:02
1.5K0
发布2020-10-26 17:18:02
举报
文章被收录于专栏:北漂的我

SpringBoot 过滤器配置有三种方式

1. @ServletComponentScan + @WebFilter, 可配置过滤路径, 但没有顺序(顺序是由过滤器命名决定)

在启动类上使用 @ServletComponentScan, 在过滤器类上使用 @WebFilter(urlPatterns = {"/test/path"})

代码语言:javascript
复制
@SpringBootApplication
@ServletComponentScan
public class ServicemapServicecenterBackendApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServicemapServicecenterBackendApplication.class, args);
	}
}
代码语言:javascript
复制
@WebFilter(urlPatterns = {"/test"})
public class FilterTwo extends OncePerRequestFilter {

	@Override
	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
		System.out.println("************************** FilterTwo **************************");
		filterChain.doFilter(request, response);
	}

}

2. @Component + @Order(100), 不可配置过滤路径, 可以通过@Order配置顺序

在过滤器类上使用 @Component , @Order(100) 数值越小优先级越高

代码语言:javascript
复制
@Component
@Order(100)
public class FilterOne extends OncePerRequestFilter {

	@Override
	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
		System.out.println("************************** FilterOne **************************");
		filterChain.doFilter(request, response);
	}
}

3. @SpringBootConfiguration + @Order, 可配置过滤路径, 可以通过@Order配置顺序, 也可以在代码中setOrder(100)配置 (推荐方式)

代码语言:javascript
复制
@Order(100)
public class FilterOne extends OncePerRequestFilter {

	@Override
	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
		System.out.println("************************** FilterOne **************************");
		filterChain.doFilter(request, response);
	}
}
代码语言:javascript
复制
@SpringBootConfiguration
public class FilterConfig {

	@Bean
	public FilterRegistrationBean<FilterOne> filterOneRegister() {
		FilterRegistrationBean<FilterOne> filterRegistrationBean = new FilterRegistrationBean<>();
		filterRegistrationBean.setFilter(new FilterOne());
		filterRegistrationBean.addUrlPatterns("/*");
//		filterRegistrationBean.setOrder(100);
		return filterRegistrationBean;
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档