springboot filter配置多个时,执行顺序问题

 更新时间:2023年12月11日 14:25:30   作者:小布的世界  
这篇文章主要介绍了springboot filter配置多个时,执行顺序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

springboot filter配置多个时,执行顺序

spring boot 配置Filter过滤器 中简单介绍了spring boot 中如何添加过滤器,有人问到如果配置多个怎么控制,先经过哪个过滤器,后经过哪个过滤器。

在web.xml中,我们知道,执行顺序是谁在前边执行谁。

在spring boot中的FilterRegistrationBean注册过滤器的类中有个order属性,

private int order = Ordered.LOWEST_PRECEDENCE;

细看源码可以知道,这个order的默认值是Integer.MAX_VALUE 也就是int的最大值,

spring boot 会按照order值的大小,从小到大的顺序来依次过滤。

spring boot 配置Filter过滤器 中可以这样修改

    /**
     * 配置过滤器
     * @return
     */
    @Bean
    public FilterRegistrationBean someFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(sessionFilter());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");
        registration.setName("sessionFilter");
        registration.setOrder(Integer.MAX_VALUE);
        return registration;
    }

再有一个过滤器的话,可以设置成

registration.setOrder(Integer.MAX_VALUE - 1)

springboot也提供了注解的方式

例如:

/**
     * 配置过滤器
     * @return
     */
    @Bean
    @Order(Integer.MAX_VALUE)
    public FilterRegistrationBean someFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(sessionFilter());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");
        registration.setName("sessionFilter");
        return registration;
    }

上面两种方法都行,想用那种看你喜欢。。。。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java web中使用cookie记住用户的账号和密码

    java web中使用cookie记住用户的账号和密码

    这篇文章主要介绍了java web中使用cookie记住用户的账号和密码的相关资料,需要的朋友可以参考下
    2017-01-01
  • springtask 的使用方法和 cron 表达式解析

    springtask 的使用方法和 cron 表达式解析

    这篇文章主要介绍了springtask 的使用方法和 cron 表达式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java十道入门易踩坑题分析前篇

    Java十道入门易踩坑题分析前篇

    这篇文章总结分析了Java入门容易碰到的几点易进坑的题目,对于新手小白刚开始学Java非常有益处,让你少走避开弯路,感兴趣的朋友快来看看吧
    2022-01-01
  • RocketMQ线程池创建实现原理详解

    RocketMQ线程池创建实现原理详解

    这篇文章主要为大家介绍了RocketMQ线程池创建实现原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • SpringBoot+easypoi实现数据的Excel导出

    SpringBoot+easypoi实现数据的Excel导出

    这篇文章主要为大家详细介绍了SpringBoot+easypoi实现数据的Excel导出,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Mybatis-Plus insertBatch执行缓慢的原因查询

    Mybatis-Plus insertBatch执行缓慢的原因查询

    这篇文章主要介绍了Mybatis-Plus insertBatch执行缓慢的原因查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java 关系运算符详情及案例(下)

    Java 关系运算符详情及案例(下)

    这篇文章主要介绍了Java 关系运算符详情及案例的实现,主要续上篇文章,上一篇文章我们讲到“等于”运算符 (==)、“不等于”运算符(!=)、“大于”运算符(>) ,这篇文章继续给大家讲解相关知识,需要的朋友可以参考一下
    2021-12-12
  • Spring在SingleTon模式下的线程安全详解

    Spring在SingleTon模式下的线程安全详解

    这篇文章主要介绍了Spring在SingleTon模式下的线程安全详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java开发到底为什么要用 IoC 和 AOP

    Java开发到底为什么要用 IoC 和 AOP

    这篇文章主要介绍了Java开发到底为什么要用 IoC 和 AOP,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • SpringBoot Session共享实现图解

    SpringBoot Session共享实现图解

    这篇文章主要介绍了SpringBoot Session共享实现图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论