談談Spring Aop的理解

2021-10-12 00:22:11 字數 1433 閱讀 2293

一:spring aop是什麼?

spring aop全稱  aspect object pramming 又叫面向切面程式設計

1.面向切面程式設計是指 對很多功能都有的重複**進行抽取,並在執行的時候往業務相應的方法上植入「切面類**」,

重複**,在spring aop中被稱為關注點;

常見的關注點:比如我們寫乙個功能模組,增,刪,改,那麼我們這些方法都有相同的地方,比如,開啟事務,提交事務,關閉事務,那麼我們就可以把這些重複**提取出來放到另外的類中,那麼這個類由關注點組成,就叫切面類

切入點:

切入點表示式:

2,aop的優點:

aop把一些重複**拿出來放到特定類中,只寫一次,我們只需要關注業務邏輯**,不必每次重複寫這些**,降低了**的耦合性,提高了隔離性,

3.aop的一些名詞:

3.aop的實現過程:

我們將重複**放入切面類後,然後利用aop將其與**物件(spring容器生成的都是**物件)關連起來,等到執行特定方法的時候來呼叫切面類中的方法,這個過程中就是由aop來幫我們完成的,aop會監聽表示式中配置的相應方法的執行,並根據織入的物件方法來執行相應的方法(一般有執行前,執行後等)。(aop的實現的核心機制之一就是動態**,所以**物件是繞不過的,順便說下**物件,假如我們把乙個目標物件載入到spring容器之中,生成的就是**物件,spring根據目標物件的不同,實現**物件的方式也會不同,spring的**物件分別是採用jdk**和cglib**來實現的,假如目標物件實現了介面,那麼系統採用的就是jdk方式來實現動態**,反之,就使用cglib來實現動態**,jdk實現的**物件跟目標物件有相同的父類,就相當於平級),而cglib實現的**物件相當於目標物件的子類,因此如果採用cglib的話目標物件不能使用final來修飾,順便說一下,如果目標物件實現了介面其實也可以強制使用cglib來實現的,不過一般不這麼用),

aop的具體實現:

舉個例子:我們在a中(目標物件)定義了乙個簡單的功能業務,

package cn.oracle.services;

public class productserviceimpl

}

然後我們又定義了乙個切面類

然後我們將這個切面類和目標類關聯起來(也就是織入目標物件),。

測試一下:

結果

spring aop的理解記錄

對aop的一些理解記錄。連線點 joinpoint 切入點 pointcut 通知 advice 和切面 aspect 假設乙個物件小明,小明這個物件有四個方法 吃喝拉耍。還有乙個物件是他的僕人。假設僕人要完成對小明行為的aop,那麼這個時候,站在僕人的角度 連線點就是小明擁有的四個方法 吃喝拉耍,...

對spring AOP的理解

aop的概念 aspect oriented programming 面向切面的程式設計 優點 在不破壞程式原有架構的基礎上對程式注入新的邏輯 降低了程式耦合度 提高了程式的靈活性 實現方法 jdk的proxy,cglib的生成二進位制檔案 繼承 物件方法等 實現方法的優缺點 這裡只考慮以上兩種 j...

菜鳥理解spring AOP

aop aspect oriented programming 即面向切面程式設計,可以說是oop object oriented programming,物件導向程式設計 的補充和完善。oop引入封裝 繼承 多型等概念來建立一種物件層次結構,用於模擬公共行為的乙個集合。不過oop允許開發者定義縱向...