天天看點

Java開發學習(二十)----AOP總結

一、AOP的核心概念

  • 概念:AOP(Aspect Oriented Programming)面向切面程式設計,一種程式設計範式
  • 作用:在不驚動原始設計的基礎上為方法進行功能增強
  • 核心概念
    • 代理(Proxy):SpringAOP的核心本質是采用代理模式實作的
    • 連接配接點(JoinPoint):在SpringAOP中,了解為任意方法的執行
    • 切入點(Pointcut):比對連接配接點的式子,也是具有共性功能的方法描述
    • 通知(Advice):若幹個方法的共性功能,在切入點處執行,最終展現為一個方法
    • 切面(Aspect):描述通知與切入點的對應關系
    • 目标對象(Target):被代理的原始對象成為目标對象

二、切入點表達式

  • 切入點表達式标準格式:動作關鍵字(通路修飾符 傳回值 包名.類/接口名.方法名(參數)異常名)
    execution(* com.itheima.service.*Service.*(..))           
  • 切入點表達式描述通配符:
    • 作用:用于快速描述,範圍描述
    • *

      :比對任意符号(常用)
    • ..

      :比對多個連續的任意符号(常用)
    • +

      :比對子類類型
  • 切入點表達式書寫技巧

    1.按标準規範開發 

    2.查詢操作的傳回值建議使用*比對 

    3.減少使用..的形式描述包 

    4.對接口進行描述,使用*表示子產品名,例如UserService的比對描述為*Service 

    5.方法名書寫保留動詞,例如get,使用*表示名詞,例如getById比對描述為getBy* 

    6.參數根據實際情況靈活調整

三、五種通知類型

  • 前置通知
  • 後置通知
  • 環繞通知(重點)
    • 環繞通知依賴形參ProceedingJoinPoint才能實作對原始方法的調用
    • 環繞通知可以隔離原始方法的調用執行
    • 環繞通知傳回值設定為Object類型
    • 環繞通知中可以對原始方法調用過程中出現的異常進行處理
  • 傳回後通知
  • 抛出異常後通知

四、通知中擷取參數

  • 擷取切入點方法的參數,所有的通知類型都可以擷取參數
    • JoinPoint:适用于前置、後置、傳回後、抛出異常後通知,設定為方法的第一個形參
    • ProceedingJoinPoint:适用于環繞通知
  • 擷取切入點方法傳回值,前置和抛出異常後通知是沒有傳回值,後置通知可有可無,是以不做研究
    • 傳回後通知
    • 環繞通知
  • 擷取切入點方法運作異常資訊,前置和傳回後通知是不會有,後置通知可有可無,是以不做研究
    • 抛出異常後通知
    • 環繞通知

本文來自部落格園,作者:|舊市拾荒|,轉載請注明原文連結:https://www.cnblogs.com/xiaoyh/p/16412347.html