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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring-AOP 通过配置文件实现 异常抛出增强

發(fā)布時(shí)間:2025/3/21 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring-AOP 通过配置文件实现 异常抛出增强 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  • 概述
  • 實(shí)例

概述

異常拋出增強(qiáng)表示在目標(biāo)方法拋出異常后實(shí)施增強(qiáng),最適合的場(chǎng)景是事務(wù)管理,比如當(dāng)參與事事務(wù)的方法拋出異常后需要回滾事務(wù)。

異常拋出增強(qiáng)類需要實(shí)現(xiàn)ThrowsAdvice接口,ThrowsAdvice接口并沒有定義任何的方法,它只是一個(gè)標(biāo)志接口。

在運(yùn)行期,Spring采用反射的機(jī)制來進(jìn)行判斷。

我們必須采用以下的形式來定義異常拋出的方法

public void afterThrowing(Method method,Object[] args,Object target,Throwable t)
  • 方法名必須為afterThrowing

  • 方法入?yún)⒅星叭齻€(gè)入?yún)⑹强蛇x的,即要么同時(shí)存在,要么都沒有

  • 最后一個(gè)入?yún)⑹荰hrowable及其子類,必須得有。

  • 也可以在異常增強(qiáng)類中定義多個(gè)方法,Spring會(huì)自動(dòng)選擇匹配的方法來進(jìn)行調(diào)用。 在類的繼承樹上,兩個(gè)類的距離越近,則兩個(gè)類的相似度越高,那么當(dāng)方法拋出異常時(shí),會(huì)優(yōu)先選取異常入?yún)⒑蛼伋龅漠惓O嗨贫茸罡叩腶fterThrowing方法。

實(shí)例

代碼已托管到Github—> https://github.com/yangshangwei/SpringMaster

我們創(chuàng)建示例來演示一下,步驟如下:
創(chuàng)建業(yè)務(wù)實(shí)現(xiàn)類:ForumService.java
創(chuàng)建業(yè)務(wù)增強(qiáng)類:TransactionManager.java
創(chuàng)建配置文件:conf-advice.xml
創(chuàng)建增強(qiáng)測(cè)試類:ThrowsAdviceTest.java

首先,創(chuàng)建業(yè)務(wù)邏輯類ForumService

package com.xgj.aop.spring.advice.throwsAdvice;public class ForumService {public void removeForum() {// 進(jìn)行相應(yīng)的數(shù)據(jù)庫操作,但這里只為演示拋出異常throw new RuntimeException("removeForum:Exception...");}public void updateForum() {// 進(jìn)行相應(yīng)的數(shù)據(jù)庫操作,但這里只為演示拋出異常throw new RuntimeException("updateForum:Exception...");} }

接下來我們創(chuàng)建增強(qiáng)類TransactionManager

package com.xgj.aop.spring.advice.throwsAdvice;import java.lang.reflect.Method;import org.springframework.aop.ThrowsAdvice;public class TransactionManager implements ThrowsAdvice {/*** 捕獲異常并打印異常名稱* * @param method* 目標(biāo)對(duì)象對(duì)應(yīng)方法* @param args* 方法入?yún)? @param target* 目標(biāo)對(duì)象* @param ex* 運(yùn)行方法所捕獲的異常* @throws Throwable*/public void afterThrowing(Method method, Object[] args, Object target,Exception ex) throws Throwable {System.out.println("method:" + method.getName());System.out.println("拋出異常:" + ex.getMessage());System.out.println("成功回滾事務(wù)");} }

接下來我們編寫對(duì)應(yīng)的配置文件

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="forumServiceTarget" class="com.xgj.aop.spring.advice.throwsAdvice.ForumService"/><bean id="transactionManager" class="com.xgj.aop.spring.advice.throwsAdvice.TransactionManager"/><bean id="forumService" class="org.springframework.aop.framework.ProxyFactoryBean"p:proxyTargetClass="true"p:target-ref="forumServiceTarget"p:interceptorNames="transactionManager"/></beans>

創(chuàng)建相應(yīng)的測(cè)試類進(jìn)行測(cè)試

package com.xgj.aop.spring.advice.throwsAdvice;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class ThrowsAdviceTest {@Testpublic void test() {ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com/xgj/aop/spring/advice/throwsAdvice/conf-advice.xml");ForumService forumService = ctx.getBean("forumService",ForumService.class);try {forumService.removeForum();} catch (Exception e) {}try {forumService.updateForum();} catch (Exception e) {}} }

運(yùn)行結(jié)果:

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Spring-AOP 通过配置文件实现 异常抛出增强的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色吊丝中文字幕 | 日批在线视频 | 国内精品国产三级国产aⅴ久 | aa视频网站 | 女性向片在线观看 | 天天插天天摸 | 操日韩 | 成人性生交大片免费卡看 | 老司机福利院 | 国产精品免费视频观看 | 久久av中文字幕 | 日日夜夜爱 | av网页在线| 青青草综合 | 日韩精品第二页 | 男人的天堂黄色 | 欧美激情国产精品免费 | 国产综合av | 亚洲色欲色欲www在线观看 | 亚洲成人手机在线 | 天天久久综合 | 国产精品美女 | 色屁屁影院www国产高清麻豆 | 久久性感视频 | 日韩色中色 | 在线播放不卡 | 全部孕妇毛片丰满孕妇孕交 | 欧美日日日 | 国产一级做a爰片久久毛片男 | 丰满岳乱妇在线观看中字无码 | 韩国一级片在线观看 | 青春草免费视频 | 中文字幕亚洲在线观看 | 91精选| 亚洲成色在线 | 山外人精品影院 | 蜜桃视频在线观看污 | 欧美色图视频在线 | 欧美日韩免费高清一区色橹橹 | 国产a国产片 | 男人av网站 | 韩国日本欧美一区 | 亚洲最大免费视频 | 久久久久9999| 波多野结衣一区二区三区在线 | 亚洲日日日 | www.久久网 | 亚洲天堂一区二区三区 | 成人毛片av | 国产91一区二区三区在线精品 | 91视频成人| 亚洲黄色小说网 | av在哪里看 | 午夜视频在线免费观看 | 西西久久 | h片在线看| 亚洲第一成年网 | 黄色a在线 | 中文字幕精品一区二区精品 | 狠狠躁夜夜躁人人爽天天高潮 | 成人a毛片久久免费播放 | 69视频在线 | 中国美女囗交视频 | 欧美日韩首页 | 91视频色 | 欧美男女性生活视频 | 日韩另类av| 一本一道av无码中文字幕 | 日韩精品中文字幕一区二区 | 天天操夜夜操视频 | 欧美亚洲国产一区 | 男女羞羞动态图 | 欧美伦理影院 | 日本a视频 | 色av吧 | 欧美三区在线 | jlzzjlzz国产精品久久 | 扒开女人屁股进去 | 黑人欧美一区二区三区 | 日本亲与子乱人妻hd | 中文字幕在线网址 | 丰满人妻一区二区三区53号 | 亚洲激情成人 | 亚洲少妇xxx | 大乳女喂男人吃奶 | 91精品国产乱码久久久久久久久 | www成人啪啪18软件 | 91天堂网 | 亚洲精品久久久狠狠狠爱 | 日本三级456| 欧美美女色图 | 米奇7777狠狠狠狠视频 | 在线观看免费福利 | 免费欧美一区 | 欧美日韩在线二区 | 婷婷天堂网 | 免费观看在线高清 | 一级片在线 | 国产91看片 |