1. 程式人生 > >spring_(15) AOP 相關基礎(AOP簡介) 之二

spring_(15) AOP 相關基礎(AOP簡介) 之二

AOP簡介

  • AOP(Aspect-Oriented Programming,面向切面程式設計):是一種新的方法論,是對傳統OOP(Object-Oriented Programming,面向物件程式設計)的補充
  • AOP的主要程式設計物件是切面(aspect),而切面模組化橫切關注點.
  • 在應用AOP程式設計時,仍然需要定義公共功能,但可以明確的定義這個功能在哪裡,以什麼方式應用,並且不必修改受影響的類.這樣一來橫切關注點就被模組化到特殊的物件(切面)裡.
  • AOP的好處:
    1. 每個事物邏輯位於一個位置,程式碼不分散,便於維護和升級.
    2. 業務模組更簡潔,只包含核心業務程式碼.

在這裡插入圖片描述

AOP術語

  • 切面(Aspect):橫切關注點(跨越應用程式多個模組的功能)被模組化的特殊物件
  • 通知(Advice):切面必須要完成的工作
  • 代理(Proxy) :向目標物件應用通知之後建立的物件
  • 連線點(Joinpoint):程式執行的某個特定位置:如類某個方法呼叫前、呼叫後、方法丟擲異常後等。連線點由兩個資訊確定:方法表示的程式執行點;相對點表示的方位。例如 ArithmeticCalculator#add()方法執行前的連線點執行點為ArithmethicCalculator#add();方位為該方法執行前的位置
  • 切點(Pointcut):每個類都擁有多個連線點
    :例如ArithmethicCalculator的所有方法實際上都是連線點,即連線點是程式類中客觀存在的事務AOP通過切點定位到特定的連線點。類比:連線點相當於資料庫中的記錄,切點相當於查詢條件。切點和連線點不是一對一的關係,一個切點匹配多個連線點,切點通過org.springframework.aop.Pointcut介面進行描述,它使用類和方法作為連線點的查詢條件。