springBoot配置多個過濾器filter的執(zhí)行順序

1、自定義過濾器

過濾器類實現(xiàn) javax.servlet.Filter。然后添加注解 @WebFilter(filterName=“過濾器名稱” urlPatterns=“過濾規(guī)則” )

@Order(int) 注解,配合 @WebFilter 注解使用,用于多個過濾器時定義執(zhí)行順序,值越小越先執(zhí)行。

2、添加 @ServletComponentScan 注解

在啟動類上加一個注解 @ServletComponentScan(basePackages=“需要掃描的過濾器”)

3、多個過濾器如何指定執(zhí)行順序?

使用@Order注解來設置過濾器的執(zhí)行順序,是無效的!

使用@Order注解指定一個int值,越小越先執(zhí)行。很多博客文章都是這么說的,真的可以使用這個注解指定順序嗎?答案是否定的。

經(jīng)過測試,發(fā)現(xiàn) @Order 注解指定 int 值沒有起作用,是無效的。為啥?因為看源碼發(fā)現(xiàn) @WebFilter 修飾的過濾器在加載時,沒有使用 @Order 注解,而是使用的類名來實現(xiàn)自定義Filter順序

所以這種方式下想定義Filter的順序,就必須限定 Filter 的類名,比如剛才那個 Filter 叫 Filter01,假如我們現(xiàn)在新寫了一個 Filter 叫 Filter02,那么順序就是 Filter01> Filter02。

所以這種方式雖然實現(xiàn)起來簡單,只需要注解,但自定義順序就必須要限定類名,使用類名達到排序效果了。

4、配置多個過濾器的執(zhí)行順序

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容