1. 程式人生 > >Spring Boot (Web 篇):整合過濾器Filter

Spring Boot (Web 篇):整合過濾器Filter

說在前面

Filter簡介:https://blog.csdn.net/Soinice/article/details/82787964

上一篇文章已經對定義Servlet 的方法進行了說明,過濾器(Filter)的註冊方法和 Servlet 一樣,不清楚的可以檢視下上一篇文章:https://blog.csdn.net/Soinice/article/details/82757376

在spring boot中新增自己的Filter有兩種方法,程式碼註冊Filter和註解自動註冊(Servlet和Listener也是如此)。

 一、程式碼註冊通過FilterRegistrationBean 獲得控制。  也可以通過實現 ServletContextInitializer 介面直接註冊。

 二、在 SpringBootApplication 上使用@ServletComponentScan註解後,Filter可以直接通過 @WebFilter註解自動註冊,無需其他程式碼。

在pom.xml加入相關依賴

當然,通過idea 建立預設spring boot web 專案,會預設含有這個屬性

1)通過FilterRegistrationBean進行程式碼註冊

編寫過濾器 Filter

註冊過濾器 Filter

將 Filter 註冊成 Bean。新增到過濾器鏈中,此方式適用於使用第三方的過濾器。在上文建立的 WebMvcConfig類中新增如下程式碼:

頁面訪問

2)通過註解@ServletComponentScan進行程式碼註冊

編寫過濾器 Filter

在Filter 類添加註解@WebFilter:

註冊過濾器 Filter

將 Servelt 進行元件掃描。在應用啟動SpringBootDemoApplication類中添加註解@ServletComponentScan:

頁面訪問

總結

當有多個過濾器需要按順序執行時怎麼辦?

使用註解的配置方法不能配置順序,但是可以通過過濾器名字的字典順序實現順序過濾(比如AFilter就會在BFilter前執行),顯然這種方法看起來不怎麼正經。

但是我們可以使用第二種配置方法.

通過給註冊類設定order,order越小,執行優先順序越高

原始碼下載

[相關示例完整程式碼]請獲取 相關分支哦:feature-20180910-web