怎么查看SpringBoot工程中每個過濾器的執(zhí)行順序
在使用SpringBoot開發(fā)過程中,有時遇到一些場景需要編寫Filter過濾器來完成,當(dāng)SpringBoot內(nèi)置過濾器和我們寫的過濾器在同時起作用的時候,了解每個過濾器的執(zhí)行順序?qū)ξ覀冮_發(fā)、解決問題很有幫助,接下來就給大家介紹下怎么分析自己的SpringBoot工程中每個過濾器的執(zhí)行順序~
SpringBoot版本 2.4.5
參考官方文檔:https://docs.spring.io/spring-boot/docs/2.4.5/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners-beans
使用方式
1.使用IDE打開SpringBoot工程,修改application.yml配置文件(application.properties同理),將web日志組的日志級別調(diào)整為debug,然后啟動工程并觀察控制臺輸出
運(yùn)行效果
2.通過控制臺日志輸出,搜索Mapping filters快速定位到日志內(nèi)容部分

這是我工程中的輸出:filterRegistrationBean urls=[/] order=-2147483647, characterEncodingFilter urls=[/] order=-2147483648, formContentFilter urls=[/] order=-9900, requestContextFilter urls=[/] order=-105, httpTraceFilter urls=[/] order=2147483637, cachingRequestBodyFilter urls=[/] order=2147483647
filterRegistrationBean urls=[/*] order=-2147483647
characterEncodingFilter urls=[/*] order=-2147483648
formContentFilter urls=[/*] order=-9900
requestContextFilter urls=[/*] order=-105
httpTraceFilter urls=[/*] order=2147483637
cachingRequestBodyFilter urls=[/*] order=2147483647
order值越小,優(yōu)先級越高,也就是Filter越靠前執(zhí)行,同Spring框架中@Order注解的解析順序規(guī)則一致,通過日志還可以看到每個過濾器的過濾路徑規(guī)則設(shè)置,能加深我們對SpringBoot工程運(yùn)行機(jī)制的了解

另外在通過FilterRegistrationBean注冊Filter過濾器時,可以設(shè)定過濾器順序值,如果想將自己寫的過濾器順序調(diào)整為最高/最低優(yōu)先級的話,可以通過Spring接口中的常量值來設(shè)置~
org.springframework.core.Ordered
示例寫法

測試工程:https://github.com/netbuffer/spring-boot-demo