最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何通過XML方式配置AOP過程解析

 更新時間:2020年07月15日 11:01:03   作者:jock_javaEE  
這篇文章主要介紹了如何通過XML方式配置AOP過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

第一步:把通知類用 bean 標簽配置起來

<bean id="txManager" class="com.atguigu.account.utils.TransactionManager">
  <!-- 注入ConnectionUtils -->
  <property name="connectionUtils" ref="connectionUtils" />
</bean>

第二步:使用 aop:config 聲明 aop 配置

aop:config:

作用:用于聲明開始 aop 的配置

<aop:config>
</aop:config>

第三步:在使用 aop:config標簽里面配置 aop:aspect切面

aop:aspect:

作用: 用于配置切面。 屬性:

  • id:給切面提供一個唯一標識。
  • ref:引用配置好的通知類 bean 的 id。

<aop:aspect id="txAdvice" ref="txManager">
<!--配置通知的類型要寫在此處-->
</aop:aspect>

第四步:使用 aop:pointcut 配置切入點表達式

aop:pointcut:

作用: 用于配置切入點表達式。就是指定對哪些類的哪些方法進行增強。

屬性: expression:用于定義切入點表達式。

id:用于給切入點表達式提供一個唯一標識

<!--配置通用切入點表達式,需要將該標簽放置在通知之前-->
<aop:pointcut id="pt1" expression="execution(* com.atguigu.account.service.impl.*.*(..))" />

第五步:使用 aop:xxx 配置對應的通知類型

<aop:config>
  <!--配置通用切入點表達式-->
  <aop:pointcut id="pt1" expression="execution(* com.atguigu.account.service.impl.*.*(..))" />
  <aop:aspect id="txAdvice" ref="txManager">
    <!--配置前置通知:開啟事務-->
    <aop:before method="beginTransaction" pointcut-ref="pt1" />
    <!--配置后置通知:提交事務-->
    <aop:after-returning method="commit" pointcut-ref="pt1" />
    <!--配置異常通知:回滾事務-->
    <aop:after-throwing method="rollback" pointcut-ref="pt1" />
    <!--配置最終通知:釋放連接-->
    <aop:after method="release" pointcut-ref="pt1" />
  </aop:aspect>
</aop:config>

六、詳細解析

 aop:before 
  作用:  用于配置前置通知。指定增強的方法在切入點方法之前執(zhí)行  
  屬性: 
    method:用于指定通知類中的增強方法名稱  
    ponitcut-ref:用于指定切入點的表達式的引用  
    poinitcut:用于指定切入點表達式  
    執(zhí)行時間點:切入點方法執(zhí)行之前執(zhí)行 
  <aop:before method="beginTransaction" pointcut-ref="pt1"/> 


  aop:after-returning 
    作用:  用于配置后置通知 屬性:  
    method:指定通知中方法的名稱。  
    pointct:定義切入點表達式  
    pointcut-ref:指定切入點表達式的引用 
    執(zhí)行時間點:  切入點方法正常執(zhí)行之后。它和異常通知只能有一個執(zhí)行 
  <aop:after-returning method="commit" pointcut-ref="pt1"/> 


  aop:after-throwing 
     作用:  用于配置異常通知 屬性:  
     method:指定通知中方法的名稱。  
     pointct:定義切入點表達式  
     pointcut-ref:指定切入點表達式的引用 
     執(zhí)行時間點:  切入點方法執(zhí)行產生異常后執(zhí)行。它和后置通知只能執(zhí)行一個 
  <aop:after-throwing method="rollback" pointcut-ref="pt1"/>


  aop:after 
     作用:  用于配置最終通知 屬性:  
     method:指定通知中方法的名稱。  
     pointct:定義切入點表達式  
     pointcut-ref:指定切入點表達式的引用 
     執(zhí)行時間點:  無論切入點方法執(zhí)行時是否有異常,它都會在其后面執(zhí)行。 
  <aop:after method="release" pointcut-ref="pt1"/> 



 aop:around: 
     作用:  用于配置環(huán)繞通知 
     屬性:  
       method:指定通知中方法的名稱。  
       pointct:定義切入點表達式  
       pointcut-ref:指定切入點表達式的引用 
     說明:  它是 spring 框架為我們提供的一種可以在代碼中手動控制增強代碼什么時候執(zhí)行的方式。 
     注意:  通常情況下,環(huán)繞通知都是獨立使用的 

七、環(huán)繞通知

 /** 
  * 環(huán)繞通知 * @param pjp 
  * spring 框架為我們提供了一個接口:ProceedingJoinPoint,它可以作為環(huán)繞通知的方法參數。 
  * 在環(huán)繞通知執(zhí)行時,spring 框架會為我們提供該接口的實現類對象,我們直接使用就行。 
  * @return 
  */ 
  public Object transactionAround(ProceedingJoinPoint pjp) { 
     //定義返回值 
    Object rtValue = null; 
    try {  
    //獲取方法執(zhí)行所需的參數  
    Object[] args = pjp.getArgs(); 
    
    //前置通知:開啟事務  
    beginTransaction(); 
    
    //執(zhí)行方法  
    rtValue = pjp.proceed(args); 
    
    //后置通知:提交事務  
    commit(); 
    }catch(Throwable e) {  
    //異常通知:回滾事務  
    rollback();  
    e.printStackTrace(); 
    }finally { 
     //最終通知:釋放資源  
       release(); 
    } 
       return rtValue; 
   }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 一文詳解如何通過Java實現SSL交互功能

    一文詳解如何通過Java實現SSL交互功能

    這篇文章主要為大家詳細介紹了如何通過Java實現SSL交互功能,文中的示例代碼講解詳細,對我們的學習或工作有一定的幫助,需要的可以參考一下
    2023-04-04
  • JAVA實現DOC轉PDF的示例代碼

    JAVA實現DOC轉PDF的示例代碼

    Word作為目前主流的文本編輯軟件之一,功能十分強大,但是在傳輸的時候不穩(wěn)定,那么如何從DOC轉PDF,本文就來介紹一下,感興趣的可以了解一下
    2021-08-08
  • Nacos配置中心搭建及動態(tài)刷新配置及踩坑記錄

    Nacos配置中心搭建及動態(tài)刷新配置及踩坑記錄

    這篇文章主要介紹了Nacos配置中心搭建及動態(tài)刷新配置及踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Netty分布式ByteBuf使用subPage級別內存分配剖析

    Netty分布式ByteBuf使用subPage級別內存分配剖析

    這篇文章主要為大家介紹了Netty分布式ByteBuf使用subPage級別內存分配剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • springboot與mybatis整合實例詳解(完美融合)

    springboot與mybatis整合實例詳解(完美融合)

    大家都知道springboot搭建一個spring框架只需要秒秒鐘。下面通過實例代碼給大家介紹一下springboot與mybatis的完美融合,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-09-09
  • eclipse漢化及jdk安裝環(huán)境配置超詳細教程(Java安裝教程)

    eclipse漢化及jdk安裝環(huán)境配置超詳細教程(Java安裝教程)

    這篇文章主要介紹了eclipse漢化及jdk安裝環(huán)境配置超詳細教程(Java安裝教程),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java中ThreadLocal的用法和原理詳解

    Java中ThreadLocal的用法和原理詳解

    這篇文章主要為大家詳細介紹了Java中ThreadLocal的用法和原理,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的可以了解一下
    2023-04-04
  • Springboot如何根據實體類生成數據庫表

    Springboot如何根據實體類生成數據庫表

    這篇文章主要介紹了Springboot如何根據實體類生成數據庫表的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Mybatis-plus更新Null字段的四種方法

    Mybatis-plus更新Null字段的四種方法

    在項目開發(fā)過程中,經常會使用Mybatis-plus的updateById()方法,快速將接收道德參數或者查詢結果中原本不為null的字段更新為null,這個時候使用updateById()并不能實現這個操作,不會報錯,但是對應的字段并沒有更新為null,所以本文介紹了Mybatis-plus更新Null字段的方法
    2025-03-03
  • SpringBoot?mybatis-plus使用json字段實戰(zhàn)指南

    SpringBoot?mybatis-plus使用json字段實戰(zhàn)指南

    在現代應用開發(fā)中經常會使用JSON格式存儲和傳輸數據,為了便捷地處理數據庫中的JSON字段,MyBatis-Plus提供了強大的JSON處理器,這篇文章主要給大家介紹了關于SpringBoot?mybatis-plus使用json字段的相關資料,需要的朋友可以參考下
    2024-01-01

最新評論

崇明县| 招远市| 葵青区| 平湖市| 临夏市| 大庆市| 松滋市| 开封市| 宁安市| 丰都县| 昌邑市| 双江| 当雄县| 西峡县| 武安市| 中江县| 台北县| 莱芜市| 微博| 冀州市| 曲麻莱县| 丰镇市| 商丘市| 广东省| 吉安市| 福州市| 湘阴县| 德州市| 河间市| 剑川县| 沁阳市| 杭州市| 凌海市| 佛冈县| 上饶市| 临桂县| 勃利县| 瑞丽市| 兰考县| 刚察县| 青州市|