攔截器、過濾器、@Aspect 區別


1、需求場景

 之前也有在文章寫道 “攔截器\過濾器" 的區別, 文章鏈接,在實際開發過程中,我們可能會遇到攔截請求參數的需求,在這我舉個場景。
 
某一個接口的請求參數都是加密的,而請求參中還有一些跟業務無關的數據,需要剔除。

 

2、問題產生

 那么怎么能夠實現只要和業務有關的數據呢?

 首先,我們想到的是通過攔截器,對加密的數據進行解密,然后把解密后的數據重新放到 request 中,request.setAttribute("數據名", 數據);
 
 其實呢,還可以通過 @Aspect 注解,在方法里通過 @before,@around 和 @after 注解的方式來攔截數據,配置起來比攔截器簡單。
 
疑惑就在這產生了,通過  @Aspect  注解的方式寫的跟攔截器有什么區別呢,他到底是不是攔截器呢?

 

3、問題總結

 3.1、三者不同

 @Aspect 注解形式是 AOP 的一種實現。AOP 使用的主要是動態代理 。
 
 過濾器使用的主要是反射 。
 
 攔截器使用的主要是回調 。
 

 3.2、示例分析

 前台一個請求過來 ,會先進行過濾器處理,看程序是否受理該請求 。 過濾器放過后 , 程序中的攔截器進行處理 ,處理完后進入 被 AOP 動態代理重新編譯過的主要業務類進行處理 。
 
 通過示例去理解三者的不同 ,所以三者不存在所屬關系。
 
 博客地址:https://www.cnblogs.com/niceyoo

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM