springboot中创建Filter有四种方法,具体如下

第一种

@WebFilter(filterName = "myFilter",urlPatterns = "/*")
public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {}@Overridepublic void destroy() {}
}@SpringBootApplication
@EnableAutoConfiguration
@EnableWebMvc
@ServletComponentScan(basePackages = "com.my.test.filter")//所扫描的包路径必须包含该Filter
public class Application {public static void main(String[] args) {SpringApplication.run(Application .class, args);}
}

特别注意:@ServletComponentScan 所扫描的包路径必须包含该Filter

第二种

@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean filterRegistrationBean(){FilterRegistrationBean bean = new FilterRegistrationBean();bean.setFilter(new MyFilter2());bean.addUrlPatterns("/*");return bean;}
}

第三种

@Bean("proxyFilter")public Filter filter (){return new Filter() {@Overridepublic void init(javax.servlet.FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {}@Overridepublic void destroy() {}};}@Beanpublic DelegatingFilterProxyRegistrationBean delegatingFilterProxyRegistrationBean(){DelegatingFilterProxyRegistrationBean bean = new DelegatingFilterProxyRegistrationBean("proxyFilter");bean.addUrlPatterns("/*");return bean;}

方法四

@Bean("myFilter")public Filter filter (){return new Filter() {@Overridepublic void init(javax.servlet.FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {}@Overridepublic void destroy() {}};}

说明:

  • 第二种和第三种类似,均实现了AbstractFilterRegistrationBean接口,而该接口间接实现了ServletContextInitializer,springboot在启动容器后会查找实现该接口的bean,并调用onStartup()方法添加自定义的Filter,两则的区别 DelegatingFilterProxyRegistrationBean 通过传入的proxyFilter名字,在WebApplicationContext查找该Fillter Bean,并通过DelegatingFilterProxy生成基于该Bean的代理Filter对象,
    FilterRegistrationBean 则是直接设置一个Filter,因此该Filter可以有spring容器管理,也可不用spring管理
    注意:如果Filter声明为一个Bean,则不需要定义为FilterRegistrationBean,也会被spring发现并添加,就是方法四,该方式无法定义拦截规则等,默认全局,慎用
  • void init(FilterConfig paramFilterConfig) – 当容器初始化 Filter 时调用,该方法在 Filter 的生命周期只会被调用一次,一般在该方法中初始化一些资源,FilterConfig 是容器提供给 Filter 的初始化参数,在该方法中可以抛出 ServletException 。init 方法必须执行成功,否则 Filter 可能不起作用,出现以下两种情况时,web 容器中 Filter 可能无效: 1)抛出 ServletException 2)超过 web 容器定义的执行时间。
  • doFilter(ServletRequest paramServletRequest, ServletResponse paramServletResponse, FilterChain paramFilterChain) – Web 容器每一次请求都会调用该方法。该方法将容器的请求和响应作为参数传递进来, FilterChain 用来调用下一个 Filter。

参考  :https://www.jianshu.com/p/3d421fbce734

springboot中添加Filter的方法相关推荐

  1. springboot在工具类中添加service的方法,显示为空的解决方案

    springboot在工具类中添加service的方法,显示为空的解决方案 参考文章: (1)springboot在工具类中添加service的方法,显示为空的解决方案 (2)https://www. ...

  2. php xml 添加节点 出问题,PHP往XML中添加节点的方法

    本文实例讲述了PHP往XML中添加节点的方法.分享给大家供大家参考.具体方法如下: 1. contacts.xml代码 复制代码 代码如下: J J J Manager National 1971-1 ...

  3. ppt怎么加注解文字_PPT怎么在演示稿中添加批注的方法

    PPT怎么在演示稿中添加批注的方法 2017-10-24 16:46 责任编辑:老王啊 导读 / PPT如何在演示稿中添加批注?设计或制作PPT时,会遇到内容中需要特别解释或着重注意的地方,此时会用到 ...

  4. 在3dmax软件中添加样条的方法和详细步骤

    在3dmax软件中添加样条的方法和详细步骤! 在3dmax软件中添加样条的方法和详细步骤!三dsMax是一款三建模.动画和渲染软件.借助3dsMax,可以创造一个宏伟的游戏世界,布彩的场景,实现设计可 ...

  5. java窗体中添加图片_在java窗体程序中添加图片的方法

    在java窗体程序中添加图片的方法 发布时间:2020-06-16 11:24:13 来源:亿速云 阅读:148 作者:Leah 这篇文章主要为大家详细介绍了在java窗体程序中添加图片的方法,图文详 ...

  6. linux服务器怎么添加路由,linux系统中添加路由的方法

    linux系统中添加路由的方法 发布时间:2020-06-17 11:38:59 来源:亿速云 阅读:95 作者:Leah 这篇文章将为大家详细讲解有关linux系统中添加路由的方法,小编觉得挺实用的 ...

  7. Vue之在methods中使用filter的方法

    Vue之在methods中使用filter的方法 全局定义filter 在html使用filter 在methods使用filter 相关资料: 过滤器(Vue官方使用说明) 全局定义filter 在 ...

  8. AD 2020中添加LOGO的方法

    AD 2020中添加LOGO的方法 前言 AD2020最新版PCB设计中安装logo的具体方法 一.安装脚本 文件名称:AD脚本文件 链接:https://pan.baidu.com/s/1s0TIp ...

  9. html表格中添加超链接,Excel表格中添加超链接的方法教程

    在我们使用Excel表格的过程中,有时候需要为表格内的内容添加网站地址的超链接,以方便引入相关的内容,这个时候,我们就需要使用到添加超链接的知识了.那么,怎么在Excel表格内添加超链接呢?接下来由学 ...

最新文章

  1. 中医大计算机应用基础考试题6,中医大 计算机应用基础 复习题 参考资料.docx
  2. 网络原理题+复习资料
  3. Web Service 实现分布式事务
  4. ListView控件 1130
  5. springboot整合多数据源
  6. 如何使用SubtitleWorkshop制作字幕
  7. Atitit 头像文件上传功能实现目录1. 上传文件原理 11.1. 界面ui 11.2. 预览实现 21.3. 保存头像文件php 21.4. 保存文件nodejs java 32
  8. 计算机长宽高公式,单位换算公式大集合
  9. excel 某个单元格不是等于空值,Excel返回第一个与所有非空单元格及统计数量,把空单元格替换为0...
  10. 学习.NET好书推荐
  11. 2019冬令营集训1月7-10日总结
  12. Adobe Dreamweaver CS5和Photoshop CS5序列号
  13. CCF数据库专委会杜小勇:数据库40年激荡历程
  14. Edge 被 hao123 劫持解决方法
  15. 代码随想录第二十一天 LeetCode 530、501、236
  16. 如何使用EasyNVR+CDN突破萤石云在直播客户端数量上的限制,做到低成本高性价比的直播
  17. 配置ssh使用socks代理
  18. Kubernetes集群环境搭建全过程
  19. 幻影显示连接不到服务器,幻影纹章怎么进不去 无法连接服务器及解决方案
  20. 无接触梯控模组及设备

热门文章

  1. 算法竞赛:Online Judge介绍
  2. 未来计算机科技会是什么样的,未来的操作系统会是什么样
  3. 笔记本蓝牙连耳机 弄了很久 连不上,手机又可以..
  4. 探索 Jetpack Compose
  5. 隐私计算与区块链技术融合实现“1+1>2”的效果
  6. 移形换影 - 短视频色彩特效背后的故事 1
  7. CGB2106-Day04
  8. 地球物理大牛的网站链接
  9. Android书籍推荐:总结9位开源社区专家推荐
  10. 浅谈 paas、iaas、saas