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...