利用Spring AOP的通知型別以及建立通知

2022-03-10 22:13:50 字數 1609 閱讀 5871

通知名稱

介面前置通知

org.springframework.aop.methodbeforeadvice

後置返回通知

org.springframework.aop.afterreturningadvice

後置通知

org.springframework.aop.afteradvice

環繞通知

org.springframework.aop.methodinterceptor

異常通知

org.springframework.aop.throwsadvice

引入通知

org.springframework.aop.introductioninterceptor

寫乙個公共類,用於目標物件

public class person 

public string getname()

public void setname(string name)

}

/**

* 前置通知類

*/public class beforeadvice implements methodbeforeadvice

public static void main(string args)

}

沒毛病,本來我輸入的是zhangsan,在aop中將引數改為了lyn4ever,這樣就完美的替換了。

是在連線點(方法呼叫)返回後執行,這顯然不能像上邊那樣修改引數,也不能修改返回值。但是可以丟擲可以傳送到堆疊的異常,同樣也可以呼叫其他方法。

/**

* 後置返回通知

*/public class afterreturnadvice implements afterreturningadvice

public static void main(string args)

}

這人最好理解了,就是在方法呼叫前後都可以執行**。看起來像是前置後後置的集合,但是它可以修改方法的返回值,因為它實現的invoke方法的返回值是object,所以我們就可以修改,而前置通知的返回是void,所以沒法修改的。甚至以至於我們可以不呼叫目標物件中的連線點方法,我們完全修改這個方法的全部**。

public class mymethodinterceptor implements methodinterceptor 

}

雖然這個invoke()方法中並沒有提供像之前的那些引數,但是這乙個invocation例項可以得到

**示例

/**

* 環繞通知

*/public class mymethodinterceptor implements methodinterceptor

public static void main(string args)

}

可以看到,我們修改了目標方法返回的值。

本文demo已提交至github

spring AOP前後通知

在搭建spring的時候要求的5個jar包的基礎上新增4個jar包,總共九個jar包 然後是配置檔案的寫法,如下 開始 結束 然後最主要的是前置通知和後置通知的類和方法了 前置通知,如下 開始 package com.dao.impl import org.aspectj.lang.joinpoin...

Spring AOP通知順序

spring aop的主要註解 before after afterreturning afterthrowing around 的執行順序是什麼?spring版本不同,執行順序也不同,這裡討論spring4和spring5 spring4,after在 afterreturning或 aftert...

SpringAOP環繞通知的使用

在springaop中有五種通知,環繞通知是最為強大的通知。它能夠讓你編寫的邏輯將被通知的目標方法完全包裝起來。實際上就像在乙個通知方法中同時編寫前置通知和後置通知。本片文章具體講解環繞通知的使用。使用環繞通知定義切面 aspect public class audiencearound aroun...