Spring學習筆記 使用AOP的場景

2021-09-12 23:08:14 字數 1573 閱讀 6579

程式設計師負責什麼?

尋找可重複**,拉出來製作成通知;

在配置檔案中,宣告切入點和通知間的關係。

術語生澀難懂,「翻譯」過來就是在繁冗的業務**中可能會存在大量的重複型業務**,我們可以將這些**抽取出來,製作成乙個類,並通過cglib動態**或proxy**方式實現功能的增強。

執行階段spring負責什麼?

時刻監控切入點方法的執行。一旦檢測到切入點方法被執行,使用**技術,動態建立目標的**物件,根據通知型別,在對應位置加入增強**,完善功能,最終形成乙個完整的**業務邏輯。

幾個術語名詞解釋:

連線點:業務邏輯介面中的介面們就是連線點,他們作為事務的核心被spring攔截,再被識別判斷是否要被增強。

切入點:被攔截並被增強的業務就是切入點,說白了就是事務介面中被增強了的介面方法。

通知:被整合出來的加強方法實現類就是通知,根據執行時間不同,分為前置通知,後置通知、異常通知、環繞通知和最終通知。

這裡有乙個簡單的通知型別判斷方法,在進行**功能加強時,會呼叫method.invoke(object, args)方法,在這之前的是前置通知,這之後catch塊前的是後置通知,catch塊中的是異常通知,finally塊中的為最終通知。

/**

* 嘴業務層的四個業務

* @author administrator

* */

public inte***ce imouth

/**

* 不管是吃喝嚼還是rap都需要先張開嘴,這是必須的,所以張嘴就可以作為乙個通知整合進通知類

* @author administrator

* */

public class mouthimpl implements imouth

@override

public void drink()

@override

public void chew()

@override

public void eat()

@override

public void rap()

}

/*

* 對嘴業務的增強**,這就是乙個增強類,也叫通知類

*/public class mouthmanager

public static void closemouth()

public static void cantclosemouth()

public static void finallyclose()

}

/**

* 通過cglib**完善業務邏輯

* @author administrator

* */

public class mouthproxy catch (exception e) finally

}});

return mouthproxy;

}}

public class demo 

}

Spring學習筆記 AOP

1 匯入aop模組 spring aop spring aspects 2 定義乙個業務邏輯 3 定義乙個日誌切面類 通知方法 前置通知 before 在目標方法執行之前執行 後置通知 after 在目標方法執行結束後執行 返回通知 afterrerurning 在目標方法正常返回之後執行 異常通知...

Spring學習筆記3 AOP

這一章是上周四晚上看的,一直沒空寫,所以今天補寫一下。spring aop,即面向切面設計。我覺得可以這樣理解這個概念,把幾個類並排放著,然後用一把 刀 橫向地切過。這幾個類共同有或者相似的幾個方法,就是切出來的。在oo的思想裡,如果類b中,有類a的一些方法,則可以讓b繼承a。但是繼承,就限制b一定...

Spring學習筆記三 註解AOP

1.匯入jar包 service public class studentservice component aspect public class studentadvice afterreturning value execution cn.wang.service.如果目標方法有返回值,後置增...