1. 程式人生 > >Spring框架學習05——AOP相關術語詳解

Spring框架學習05——AOP相關術語詳解

一段 管理 事務 rri 事情 aspect targe int delet

1、Spring AOP 的基本概述

AOP(Aspect Oriented Programing)面向切面編程,AOP采取橫向抽取機制,取代了傳統縱向繼承體系重復性代碼(性能監視、事務管理、安全檢查、緩存)。Spring AOP使用純Java實現,不需要專門的編譯過程和類加載器,在運行期通過代理方式向目標類織入增強代碼。

2、AOP的相關術語

在Spring AOP 框架中涉及以下常用術語:

  • 連接點(Joinpoint):是指程序運行中的一些時間點,即那些被攔截到的點,例如方法的調用或異常的拋出;
  • 切入點(Pointcut):是指需要處理的連接點,所有的方法執行都是連接點,而切入點是一個描述信息,它修飾的是連接點,通過切入點確定哪些連接點需要被處理;
  • 切面(Aspect):是指封裝橫向切到系統功能的類(例如事務處理),是切入點和通知的結合;
  • 通知(Advice):也被稱為增強,是由切面添加到特定的連接點的一段代碼,簡單來說,通知就是指攔截到的連接點之後所要做的事情,因此通知是切面的具體實現;通知分為前置通知、後置通知、異常通知、最終通知、環繞通知;
  • 引介(Introduction):也被稱為引入,允許在現有的實現類中添加自定義的方法和屬性;
  • 目標對象(Target Object):是指被通知的對象,即代理的目標對象;
  • 織入(Weaving):是將切面代碼插入到目標對象上,從而生成代理對象的過程;
  • 代理(Proxy):是通知應用到目標對象之後被動態創建的對象;

3、AOP術語詳解

創建dao包,並創建StuDao接口和接口實現類StuDaoImpl,代碼示例如下:
StuDaoImpl實現類

public class StuDaoImpl implements StuDao {
    @Override
    public void add(Stu stu) {
        System.out.println("添加學生");
    }

    @Override
    public void find() {
        System.out.println("查詢學生");
    }

    @Override
    
public void update(Stu stu) { System.out.println("修改學生"); } @Override public void delete(Stu stu) { System.out.println("刪除學生"); } }

參考以上代碼,其中:

  • Joinpoint(連接點)是指可以被攔截到的點,實現類中的增刪改查這些方法都可以被增強,這些方法稱為連接點;
  • Pointcut(切入點)是指真正被攔截到的點,如果只想對add()方法進行增強(例如做數據校驗),add()方法就是切入點;
  • Advice(通知)是指攔截後要做的事情,也叫增強,如果對add()方法進行數據校驗,數據校驗的方法就是通知;
  • Target(目標對象)是指被增強的對象,實現類StuDaoImpl就是目標對象;
  • Weaving(織入)是指將通知應用到目標對象的過程,將數據校驗應用到StuDaoImpl的add()方法的過程,就是織入;
  • Proxy(代理)是指被應用了增強後,產生一個代理對象;
  • Aspect(切面)是指切入點和通知的組合;

Spring框架學習05——AOP相關術語詳解