SpringBoot 手寫過濾器 載入第三方過濾器

2021-09-24 09:02:34 字數 1330 閱讀 4925

如何手寫乙個過濾器呢。假設我現在需要乙個計時過濾器,我想把每一次呼叫服務鎖花費的時間列印到控制台,我該怎麼做呢?

####攔截機制有三種: ######1. 過濾器(filter)能拿到http請求,但是拿不到處理請求方法的資訊。 ######2. ***(interceptor)既能拿到http請求資訊,也能拿到處理請求方法的資訊,但是拿不到方法的引數資訊。 ######3. 切片(aspect)能拿到方法的引數資訊,但是拿不到http請求資訊。 他們三個各有優缺點,需要根據自己的業務需求來選擇最適合的攔截機制。

好了下面開始正文。

###本教程大概目錄: #####1. 手寫過濾器 #####2. 載入第三方過濾器

好了,開始正文。 ###1. 手寫過濾器 特別容易,繼承filter ,然後根據需求重寫它的三個方法。

/**

* timefilter 計時過濾器

* created by fant.j.

*/@component

public class timefilter implements filter

@override

public void dofilter(servletrequest servletrequest, servletresponse servletresponse, filterchain filterchain) throws ioexception, servletexception

@override

public void destroy

() }

複製**

其中 init方法是初始化方法,最先執行。 然後執行dofilter方法,熟悉servlet的應該都知道,它其實就是呼叫業務。 最後destroy方法,是最後執行的。

然後我們啟動服務,隨便呼叫乙個controller,控制台列印如下:

###2. 載入第三方過濾器

一般在開發的時候,我們可能用到第三方的過濾器,我們不可能在其原始碼上新增@component註解。所以我們必須寫乙個配置類來引入它。

下面我們把上面的例子當作第三方過濾器,把timefilter類上面的@component註解去掉。做乙個模擬練習。

/**

* 引入第三方過濾器 將其放入spring容器

* created by fant.j.

*/@configuration

public class webconfig

}複製**

注意一定要去掉timefilter類上面的@component註解,否則過濾器會失效。

vue 編寫過濾器

1 起乙個 filters.js 檔案,編寫過過濾器,然後 export 出去,如以下 let money value let tofixed value else 多個引數 let imghost value,w,h export 2 然後在 main.js 裡引入,用 import as 的意思...

SpringBoot 過濾器總結

1 對過濾器使用 component註解或者在配置類中使用 bean註解,但這種方式有個弊端就是攔截所有請求 2 使用 webfilter註解可以指定攔截url,但此方式也存在弊端多個過濾器無法指定優先順序 3 使用filterregistrationbean方式建立過濾器可以指定過濾器優先順序 1...

SpringBoot過濾器的使用

只需要建立乙個過濾器就搞定了。webfilter urlpatterns public class customfilter implements filter override public void dofilter servletrequest servletrequest,servletre...