Spring Boot中如何使用過濾器

2021-08-26 09:39:56 字數 1525 閱讀 7794

1,定義過濾器和設定呼叫順序

假設定義兩個過濾器:

1,事物過濾器:開啟和提交事物操作

2,請求響應日誌過濾器:記錄請求和響應日誌

和原始過濾器一樣,我們需要實現filter介面:

@component

@order(1)

public class transactionfilter implements filter ",

req.getrequesturi());

chain.dofilter(request, response);

log.info(

"committing a transaction for req : {}",

req.getrequesturi());

}// other methods

}

@component

@order(2)

public class requestresponseloggingfilter implements filter : {}", req.getmethod(),

req.getrequesturi());

chain.dofilter(request, response);

log.info(

"logging response :{}",

res.getcontenttype());

}// other methods

}

通過使用@order來定義過濾器的執行順序。

2,過濾器的url patterns

我們的過濾器預設為我們的應用程式中的所有url註冊。但是,有時我們希望過濾器只適用於某些url patterns,只過濾我們指定的請求。這個時候我們就使用filterregistrationbean註冊篩選器:

@bean

public filterregistrationbeanloggingfilter()

3,**演示

建立乙個查詢使用者列表的api請求:

@restcontroller

public class usercontroller

}

請求這個api所列印的日誌:

23:54:38 info  com.spring.demo.transactionfilter - starting transaction for req :/users

23:54:38 info c.s.d.requestresponseloggingfilter - logging request get : /users

...23:54:38 info com.spring.demo.transactionfilter - committing transaction for req :/users

這證實了按期望的順序呼叫過濾器。

Spring Boot中如何使用多執行緒處理任務

img size medium size medium 看到這個標題,相信不少人會感到疑惑,回憶你們自己的場景會發現,在spring的專案中很少有使用多執行緒處理任務的,沒錯,大多數時候我們都是使用spring mvc開發的web專案,預設的controller,service,dao元件的作用域都...

Spring Boot中如何使用多執行緒處理任務

看到這個標題,相信不少人會感到疑惑,回憶你們自己的場景會發現,在spring的專案中很少有使用多執行緒處理任務的,沒錯,大多數時候我們都是使用spring mvc開發的web專案,預設的controller,service,dao元件的作用域都是單例項,無狀態,然後被併發多執行緒呼叫,那麼如果我想使...

Springboot如何使用AOP

切面的包 1 springboot 不自帶aop 需要自己新增依賴 org.springframework.bootgroupid spring boot starter aopartifactid dependency 2 直接 aspect寫切面類就行了1 連線點 可以理解為需要被增強的方法 2...