回覆列表
  • 1 # JAVA君

    攔截器就是進入Controller控制器之前執行 攔截器用途很廣,比如可以用來進行介面許可權控制。

    Aop稱為面向切面程式設計,簡而言之,就是在何時何地做什麼事,可以用於日誌,許可權檢查等

  • 2 # JAVA小學生

    攔截器攔截URL,他和過濾器一樣。aop可以攔截包,類,方法等。

    應用場景:

    攔截器一般用於比如token的解析和合法性校驗。

    aop一般會攔截重要業務邏輯的日誌。再比如一般自定義的註解會使用aop來實現。

  • 3 # 寫程式設計師的程式碼

    根據你的問題,我感覺這兩者是完全不同的感念。

    攔截器(Interceptor)

    它依賴於web框架,在SpringMVC中就是依賴於SpringMVC框架。在實現上,基於Java的反射機制,屬於面向切面程式設計(AOP)的一種運用,就是在service或者一個方法前,呼叫一個方法,或者在方法後,呼叫一個方法,比如動態代理就是攔截器的簡單實現,在呼叫方法前打印出字串(或者做其它業務邏輯的操作),也可以在呼叫方法後打印出字串,甚至在丟擲異常的時候做業務邏輯的操作。由於攔截器是基於web框架的呼叫,因此可以使用Spring的依賴注入(DI)進行一些業務操作,同時一個攔截器例項在一個controller生命週期之內可以多次呼叫。但是缺點是隻能對controller請求進行攔截,對其他的一些比如直接訪問靜態資源的請求則沒辦法進行攔截處理。

    面向切面(AOP)

    可以具體的攔截到方法,只能攔截Spring管理Bean的訪問(業務層Service)。 具體AOP詳情參照 Spring AOP:原理、 通知、連線點、切點、切面、表示式

    實際開發中,AOP常和事務結合:Spring的事務管理:宣告式事務管理(切面)

    AOP操作可以對操作進行橫向的攔截,最大的優勢在於他可以獲取執行方法的引數( ProceedingJoinPoint.getArgs() ),對方法進行統一的處理。

    作用層面 攔截器只對action負責,作用層面一般位於Controller層。 Spring AOP主要是攔截對Spring管理的Bean的訪問,一般作用與Service層。聯絡 Spring AOP和攔截器一樣,都是AOP的實現方式的一種,均使用代理模式實現。區別攔截器和過濾器有點相似,是鏈式的處理模式,這樣有一個缺點就是,每次請求,都會訪問action的上下文,不夠靈活。Spring AOP的註解有@Before、@After、@AfterReturning、@AfterThrowing、@Around,可以更靈活的配置要監聽處理的Bean。

  • 中秋節和大豐收的關聯?
  • 論文如何去查重?有什麼好的工具?