如何在SpringBoot下注册一个Filter

两种方式
第一种通过FilterRegistrationBean

 @Bean
 public FilterRegistrationBean filterRegistrationBean(){
    return new FilterRegistrationBean(errorPageFilter());
 }

@Bean
public Filter errorPageFilter(){
  ErrorPageFilter errorPageFilter = new ErrorPageFilter();
  ErrorPage notFind = new ErrorPage("/404");
  errorPageFilter.addErrorPages(notFind);
  return errorPageFilter;
}

第二种通过DelegatingFilterProxyRegistrationBean

@Bean
public DelegatingFilterProxyRegistrationBean delegatingFilterProxyRegistrationBean(){
  return new DelegatingFilterProxyRegistrationBean("errorPageFilter");
}

@Bean("errorPageFilter")
public Filter errorPageFilter(){
  ErrorPageFilter errorPageFilter = new ErrorPageFilter();
  ErrorPage notFind = new ErrorPage("/404");
  errorPageFilter.addErrorPages(notFind);
  return errorPageFilter;
}

二者都是继承同一个父类AbstractFilterRegistrationBean,只是DelegatingFilterProxyRegistrationBean还实现了ApplicationContextAware,注入了ApplicationContext实例,用于查找指定的Filter实例,最终构建的是一个代理Filter实例(DelegatingFilterProxy);FilterRegistrationBean中维护的是目标Filter,结果都是将Filter注册到ServletContext中,推荐使用FilterRegistrationBean。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.1 spring IoC容器和beans的简介 Spring 框架的最核心基础的功能是IoC(控制反转)容器,...
    simoscode阅读 6,785评论 2 22
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,253评论 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,655评论 1 92
  • 一、影响最深的三部分 1.我们组讲课 2.情绪 3.情操 二、影响深的原因 1.时间马上到了,感觉挺着急的。 2....
    张芳_阅读 151评论 0 1
  • 萧瑟秋风,荒芜渚岸,孤舟帆落波清。 一羽飞鸿,霜天寒水飘零。 芦花蔓草沙洲冷,棹闲停、寂寞浮萍。 满江红,如血残阳...
    沙子666阅读 404评论 0 4