91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

通過XML方式配置AOP的方法

發布時間:2020-07-16 16:06:10 來源:億速云 閱讀:135 作者:小豬 欄目:開發技術

這篇文章主要講解了通過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 
  作用:  用于配置前置通知。指定增強的方法在切入點方法之前執行  
  屬性: 
    method:用于指定通知類中的增強方法名稱  
    ponitcut-ref:用于指定切入點的表達式的引用  
    poinitcut:用于指定切入點表達式  
    執行時間點:切入點方法執行之前執行 
  <aop:before method="beginTransaction" pointcut-ref="pt1"/> 


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


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


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



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

七、環繞通知

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

看完上述內容,是不是對通過XML方式配置AOP的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄯善县| 澄城县| 土默特右旗| 江川县| 洛浦县| 屯昌县| 普宁市| 建阳市| 朝阳区| 大冶市| 西乌| 景德镇市| 秦安县| 利辛县| 武定县| 蒲江县| 时尚| 荥阳市| 贵阳市| 宁蒗| 镶黄旗| 即墨市| 西峡县| 驻马店市| 仙桃市| 子长县| 龙川县| 衡阳县| 祁门县| 交城县| 定兴县| 毕节市| 江阴市| 温泉县| 电白县| 河北区| 马山县| 永清县| 宜昌市| 谢通门县| 龙山县|