亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

Spring AOP 基于注解詳解及實例代碼

2024-09-05 00:22:59
字體:
來源:轉載
供稿:網友

Spring AOP  基于注解詳解及實例代碼

1.啟用spring對@AspectJ注解的支持:

<beans xmlns:aop="http://www.springframework.org/schema/aop"...>  <!--啟動支持-->  <aop:aspectj-autoproxy /></beans>

也可以配置AnnotationAwareAspectJAutoProxyCreator Bean來啟動Spring對@AspectJ注解的支持

<beans...>  <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" /></beans>

2.為了在應用中啟動@AspectJ的支持,還需亞奧增加兩個AspectJ庫:aspectjweaver.jar和aspectjrt.jar。除此之外,Spring AOP還需要依賴一個aopllliance.jar包

3.定義切面Bean

@Aspectpublic class LogAspect {  //...}

4.定義增強處理器,如Before

@Aspectpublic class LogAspect {  @Before("execution(* *.*.*(..))")  public void authority() {    System.out.println("執行目標方法前模擬權限檢查") ;  }}

@AfterReturning注解將在目標方法正常完成后被織入,該注解指定如下兩個屬性:
1>pointcut/value:用于指定該切入點對應的切入表達式
2>returning:指定一個形參名,用于訪問目標方法的返回值。同時如果在Advice方法中指定該形參類型,將會限制目標方法的返回值必須為該類型

@AfterThrowing注解用于處理程序中未處理的異常。該注解指定如下連個屬性:
1>pointcut/value:用于指定該切入點對應的切入表達式
2>throwing:該屬性值也指定一個形參名,用于表示目標方法拋出的未處理的異常。同時如果在Advice方法中指定該形參類型,將會限制目標方法必須拋出指定類型的異常

@Around注解近似于Before和AfterReturning增強處理的總和,它可以決定目標方法在什么時候執行,因為該注解修飾的Advice方法第一個形參為ProceedingJoinPoint類型,ProceedingJoinPoint參數有一個proceed()方法,調用該方法可以執行目標方法。如果在Advice方法中沒有顯示調用該方法, 那么目標方法將不會被執行:

@Aspectpublic class LogAspect {  @Around("execution(* *.*.*(..))")  public Object aroundAdvice(ProceedingJoinPoint jp) {    System.out.println("執行Around增強處理") ;    //獲取目標方法的原始參數    Object[] args = jp.getArgs() ;    //執行目標方法獲取返回值    Object result = jp.proceed(args) ;    System.out.priontln("Around增強處理執行完畢") ;  }}

5.如果需要獲取目標方法的相關信息,可以在定義增強處理方法時將第一個參數定義為JoinPoint類型,當該增強處理方法被調用時,該JoinPoint參數就代表了織入增強處理的連接點。JoinPoint類似與Around增強處理的ProceedingJoinPoint,只不過后者特定于Around增強處理使用。JoinPoint里包含了如下幾個常用的方法:

  1>Object[] getArgs():返回執行目標方法時的參數  2>Signature getSignature():返回被增強的方法的相關信息  3>Object getTarget():返回被織入增處理的目標對象  4>Object getThis():返回AOP框架為目標對象生成的代理對象

示例Before增強處理獲取目標方法的相關信息

@Aspectpublic class LogAspect {  @Before("execution(* *.*.*(..))")  public void beforeAdvice(JoinPoint jp) {    //獲取目標方法的參數    Object[] args = jp.getArgs() ;    System.out.println("目標方法的參數列表為:" + Array.toString(args)) ;    //獲取目標方法的方法名    String methodName = jp.getSignature().getName() ;    System.out.println("目標方法的方法名為:" + methodNamme) ;    //獲取被織入增強處理的目標對象LogAspect    System.out.println("被織入增強處理的目標對象為:" + jp.getTarget()) ;  }}

6.如果兩個不同的Aspect里的兩個Advice需要在同一個JoinPoint連接點被植入時,Spring AOP將會以隨機的順序來織入這兩個增強處理。如果需要指定他們的優先級,有兩種方法:

  1>Aspect類實現org.springframework.core.Ordered接口,并且實現其抽象方法:int getOrder();該方法的返回值越小,優先級就越高  2>直接使用@Order注解來修飾Aspect類,該注解需要指定一個int型的value屬性值

7.定義切入點Pointcut:包含兩個部分:一個切入點表達式和一個包含名字和任意參數的方法簽名:

@Pointcut("execution(* *.*.*(..))")public void simplepointcut() {  //...}//定義了Pointcut之后,就可以在其他的增強處理中使用其方法名作為pointcut屬性值了:@Before(pointcut="simplepointcut()")//等同于pointcut="execution(* *.*.*(..))"public void beforeAspect() {  //...}//如果使用的pointcut切入點不是同一類,就需要使用類來修飾如:  @Before(pointcut="Simple.simplepointcut()")  ...

8.切入點指示符:也就是之前增強處理中指定的execution一類,用于指定目標方法要滿足的條件。Spring AOP一共支持如下幾種切入點指示符:

1>execution:用于匹配執行方法的joinpoint  2>within:用于限定匹配特定類型的joinpoint 如:    within(com.cheng.joinpoint.*)  3>this:用于限定AOP代理必須是指定類型的實例,匹配該對象的所有連接點 如:    this(com.cheng.aop.aopService)  4>target:用于限定目標獨享必須是指定類型的實例  5>args:用于對連接點的參數類型進行限制,要求參數類型必須是指定類型的實例,多個參數類型使用逗號隔開  6>bean:用于限定只匹配指定Bean的實例內的連接點,需要傳入Bean的id/name

9>最后,我們需要在Spring配置文件中使用元素來指定自動搜索切面類

<beans...>  <!--指定自動搜索Bean組件、自動搜索切面類-->  <context:component-scan base-package="com.cheng">    <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect" />  </context:component-scan></beans>

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠色狠色综合曰曰| 日本成人黄色片| 午夜精品三级视频福利| 日韩精品在线第一页| 777精品视频| 欧美美女18p| 亚洲欧美日本另类| 成人妇女淫片aaaa视频| 91大神在线播放精品| 米奇精品一区二区三区在线观看| 午夜剧场成人观在线视频免费观看| 超在线视频97| 日本国产一区二区三区| 欧美激情一区二区久久久| 欧美成人在线影院| 中文字幕亚洲欧美日韩2019| 日本久久久久久久久| 久久好看免费视频| 亚洲深夜福利网站| 一本色道久久综合狠狠躁篇的优点| 日韩三级成人av网| 91九色精品视频| 北条麻妃99精品青青久久| 日韩三级影视基地| 成人免费视频在线观看超级碰| 欧美日韩在线视频观看| 国产精品成人观看视频国产奇米| 全色精品综合影院| 欧美制服第一页| 日韩美女av在线免费观看| 亚洲国产91色在线| 亚洲丝袜在线视频| 日韩精品在线视频观看| 欧美黑人xxxⅹ高潮交| 青青久久av北条麻妃海外网| 日韩欧美在线视频观看| 国产精品一区二区久久精品| 午夜欧美大片免费观看| 色在人av网站天堂精品| 亚洲视频网站在线观看| 欧美国产日产韩国视频| 久久久久久香蕉网| 欧美性少妇18aaaa视频| 欧美日韩国产在线| 欧美日韩美女在线| 国产精品一区二区av影院萌芽| 日韩激情第一页| 日本午夜在线亚洲.国产| 日韩午夜在线视频| 亚洲成人中文字幕| 国产在线观看精品| 亚洲最新中文字幕| 91在线观看免费高清完整版在线观看| 美日韩精品免费观看视频| 97人人模人人爽人人喊中文字| 精品毛片网大全| 国产成人在线一区| 伊人激情综合网| 精品久久久国产| 亚洲大胆人体视频| 97婷婷大伊香蕉精品视频| 亚洲永久免费观看| 欧美日韩中国免费专区在线看| 欧美性xxxxxxxxx| 8090理伦午夜在线电影| 亚洲国产成人精品女人久久久| 啊v视频在线一区二区三区| 日韩精品久久久久| 亚洲欧美精品在线| 精品香蕉在线观看视频一| 91影院在线免费观看视频| 少妇激情综合网| 青青草国产精品一区二区| 欧美午夜激情视频| 日韩有码视频在线| 亚洲在线免费视频| 久久免费精品日本久久中文字幕| 最近中文字幕日韩精品| 91精品国产乱码久久久久久久久| 亚州国产精品久久久| 国产精品999999| 日韩女优人人人人射在线视频| 成人国产在线视频| 欧美日韩国产成人在线观看| 亚洲免费av网址| 久久久99免费视频| 日韩精品视频中文在线观看| 欧美日韩在线视频观看| 最近更新的2019中文字幕| 日韩在线观看网站| 久久亚洲精品视频| 日韩电视剧在线观看免费网站| 欧美极品少妇与黑人| 久久在线观看视频| 国产精品爽爽爽爽爽爽在线观看| 亚洲xxxx妇黄裸体| 日韩精品在线免费观看| 日韩欧美精品网站| 午夜精品久久久99热福利| 色吧影院999| 26uuu亚洲伊人春色| 97视频在线观看网址| 亚洲一区二区中文| 成人国产在线视频| 欧美激情a∨在线视频播放| 69影院欧美专区视频| 欧美在线欧美在线| 亚洲第一区在线| 影音先锋欧美在线资源| 日韩国产精品亚洲а∨天堂免| 久热精品视频在线观看| 97精品免费视频| 91在线|亚洲| 人人做人人澡人人爽欧美| 欧美日韩中国免费专区在线看| 国产精品精品视频| 国产精品91免费在线| 亚洲精品美女久久| 亚洲人午夜精品免费| 精品中文字幕乱| 亚洲色图av在线| 亚洲xxxx做受欧美| 国产成人精品视频在线观看| 亚洲欧美中文字幕在线一区| 中文字幕日韩在线播放| 久久久欧美一区二区| 亚洲国产精品成人av| 国产日韩欧美综合| 亚洲电影免费观看| 在线观看欧美日韩国产| 欧美成人午夜激情在线| 国产精品一区二区久久| 九九久久国产精品| 91欧美激情另类亚洲| 亚洲japanese制服美女| 亚洲福利视频网站| 欧美午夜丰满在线18影院| 日韩中文综合网| 久久99精品久久久久久噜噜| 日韩美女激情视频| 欧美激情视频在线| 精品久久久久久中文字幕大豆网| 欧美激情国内偷拍| 国产亚洲精品高潮| 欧美成人激情视频| 国产精品18久久久久久首页狼| 久久国产精品偷| 亚洲高清福利视频| 欧美国产精品人人做人人爱| 日本高清视频一区| 精品无人国产偷自产在线| 亚洲一二三在线| 7777精品久久久久久| 日韩美女在线看| 久久99久久99精品中文字幕| 久久视频精品在线| 日韩在线视频国产| 日韩69视频在线观看| 日韩电影大全免费观看2023年上| 亚洲精品福利资源站| 最近2019免费中文字幕视频三| 亚洲一区二区中文字幕| 欧亚精品在线观看| 国产精品96久久久久久又黄又硬|