日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 毛片毛片毛片毛片毛片 | 日韩成年人视频 | 久操视频在线观看 | 狠狠躁18三区二区一区视频 | 日韩资源在线观看 | 黄色大片视频网站 | 深夜福利视频在线观看 | 涩涩视屏 | 人人澡人人看 | 国产九九精品视频 | 亚州av免费 | 伊人福利在线 | 成人一级影视 | 国产精品久久综合 | 色视频国产| 狠狠操狠狠 | 久久精品视频播放 | 看全色黄大色黄大片大学生 | sesese99| 高清免费av| 狠狠人妻久久久久久综合蜜桃 | 韩国三级免费 | 国产草草影院 | 亚洲精品无码久久久 | 精品黄色在线观看 | 亚洲熟女乱色一区二区三区 | 成人中文字幕在线 | 日本福利视频导航 | 午夜免费福利视频 | 一区不卡av | 亚洲中文字幕97久久精品少妇 | 男人天堂视频在线 | 欧美激情 亚洲 | 国产白浆视频 | 日韩欧美视频网站 | 亚洲一卡二卡 | 国产av人人夜夜澡人人爽麻豆 | 国产在线xxx| 国产剧情在线视频 | 欧美日韩免费在线观看 | 日本在线视频www | 成人激情在线观看 | 国产精品a久久久久 | 国产小视频网站 | 国产人妖在线 | 亚洲先锋影音 | 成人av动漫在线 | 日本一级一片免费视频 | 国产黄色大全 | 国产精品电影院 | 国产免费aa | 尤物videos另类xxxx | 2019中文字幕在线观看 | 福利在线一区二区三区 | 国产精品欧美激情在线播放 | 99精品免费观看 | 蜜桃视频在线入口www | 亚洲一区二区三区四区 | 性网站在线观看 | 日韩一区二区在线看 | 女性裸体视频网站 | 国产在线观看黄 | 在线免费看黄网站 | 日本久久综合网 | 色婷五月天 | 亚洲成人tv | 午夜电影天堂 | 少妇精品无码一区二区免费视频 | 午夜一区二区三区在线 | 国产精品一区一区三区 | 欧美一区二区三区在线视频 | 日本成人精品 | 五月网婷婷| 亚洲综合伊人 | 久久久久久久99 | 美女少妇毛片 | 四虎永久网址 | 亚洲欧洲免费视频 | 偷偷色噜狠狠狠狠的777米奇 | 一区二区三区黄 | 爱上av | 林天顾悦瑶笔趣阁 | 天天躁夜夜躁av天天爽 | 国产精品一区二区三区免费观看 | 亚洲专区欧美专区 | 香蕉视频免费在线播放 | 蜜臀av性久久久久蜜臀av麻豆 | 秋霞在线一区 | 小毛片网站 | 黄色网址进入 | 日本伦理一区 | 亚洲视频国产 | 国产精品天天操 | 欧美久久伊人 | 欧美激情天堂 | 免费无遮挡在线观看视频网站 | 婷婷丁香色 | www.成年人 | 嫩嫩av|