日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring的aop准备工作-导包定义通知

發布時間:2024/4/13 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring的aop准备工作-导包定义通知 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
然后接下來準備通知,這就是咱們要學的新內容了,在Spring當中,如何定義通知呢,看好,右鍵,new一個class,a_aspect,然后這兒的話咱們定義一個通知,通知英文名叫做Advice,MyAdvice,這個名詞就叫Advice,通知,咱們作為通知類,然后呢,在這個類當中,Spring在AOP生成代理的時候,非常體貼,他根據咱們現實開發的情況,把通知分成了好多種,根據不同的需要,咱們挑選咱們需要通知的種類,哪些種通知,前置通知,后置通知,環繞通知,還有咱們的異常攔截通知,以及后置通知,有些人說后置通知重復了,沒有重復,一種后置通知,如果出現異常,將不會調用它,如果出現異常不會調用,無論是否出現異常,都會調用,那所謂前置通知,前置通知看名字就知道,還記得通知名詞是啥意思吧,咱們打算增強目標方法中的代碼,通知就是希望,你寫的這段通知代碼,是在目標方法運行之前調用,然后后置通知,是啥意思呢,是希望在目標方法運行之后調用,環繞通知呢,它是希望在目標方法之前,和之后,都調用,那所謂異常攔截通知的話,從他名字也能看出來,如果出現異常,就會調用通知代碼,這個后置通知,在目標方法運行之后調用,區別已經說了,一個是出現異常掉,一個是出現異常不調,一共是分為5種通知,接下來這個通知,在類中怎么定義,在Spring中很簡單,使用方法來進行控制的,聲明一個方法public void,before自己定義的,直觀點叫做before,咱們作為前置通知,那前置通知這里面要做什么事,看明白啥意思不,是不是很簡單,然后把這個復制一份,后置通知,后置方法名隨意,但是我為了讓你們看明白這個方法是什么通知,afterReturning,就是在目標方法之后調用,這是后置通知,如果方法出現異常,不會調用,我把這句話也粘上,后面的是后置通知,咱們再來一個環繞通知,環繞通知方法名你們能看懂,around,環繞,環繞通知呢,是五種通知當中最特別的一種通知,你可以看到,這環繞通知是在目標方法之前和之后,都會調用,其實這就意味著,他要控制目標方法調用的,也就是需要咱們手動來調用目標方法,在咱們目標方法之前和之后,這是唯一特殊的通知,這個通知特殊在哪呢,你必須有一個參數,叫ProceedJoinPoint對象,pjp,然后呢,通過這個對象,來調用咱們的pjp點,這個方法叫做什么來的,在這呢,異常要拋就可以了,拋出這個異常,這行代碼,就是調用目標方法代碼,就是調用目標方法,咱們環繞通知,在目標方法之前和之后加代碼,這是環繞通知之前的部分,然后復制一下,這是環繞通知之后的部分,看明白啥意思,你需要手動來調用目標方法,利用人家暴露的api調用目標方法,人家暴露的api就是這樣的,這是要死記硬背的,然后這個方法還有一個特殊就是,還有一個返回值,你要把目標方法返回值給return出去,是不是有點像剛才的動態代理,動態代理的源碼,就是這個意思,接下來再來看異常通知,異常通知方法名afterException,就是在異常出現之后,然后出現異常通知也打印一下,異常通知,最后一個后置通知,就是after,這個是后置通知,出現異常也會調用,剛才是出現異常不會調用,這個出現異常也會調用,這樣的話,咱們5類通知就定義好了,這就是咱們的通知類,通知的描述部分,下面是通知的定義部分,咱們看看這個流程,包也導好了,目標對象也準備好了,通知也準備好了,咱們說代理簡單也簡單,無非就是把通知織入到目標對象,所以最后只要你告訴Spring說,這是這些通知,你給我織入到目標對象,只要在配置文件里一描述,這是不是就妥了,那咱們怎么來進行配置的,是不是咱們要學的一個關鍵點 package com.learn.a_aspect;import org.aspectj.lang.ProceedingJoinPoint;/*** 通知類* @author Leon.Sun**/ public class MyAdvice {/*** 前置通知* |-目標方法運行之前調用*//*** 后置通知(如果出現異常不會調用)* |-在目標方法運行之后調用*//*** 環繞通知* |-在目標方法之前和之后調用*//*** 異常攔截通知* |-如果出現異常,就會調用*//*** 后置通知(無論是否出現異常 都會調用)* |-在目標方法運行之后調用*/// --------------------------------------------------------------------/*** 前置通知*/public void before() {System.out.println("這是前置通知!!");}/*** 后置通知*/public void afterReturning() {System.out.println("這是后置通知!!(如果出現異常不會調用)");}/*** 環繞通知* @param pjp* @throws Throwable */public Object around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("這是環繞通知之前的部分!!");/*** 調用目標方法*/Object proceed = pjp.proceed();System.out.println("這是環繞通知之后的部分!!");return proceed;}/*** 異常通知*/public void afterException() {System.out.println("出事啦!出現異常啦!");}/*** 后置通知*/public void after() {System.out.println("后置通知(無論是否出現異常 都會調用)");} }

?

總結

以上是生活随笔為你收集整理的spring的aop准备工作-导包定义通知的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。