鍍金池/ 問(wèn)答/Java/ 自定義切面的問(wèn)題

自定義切面的問(wèn)題

額,很難表達(dá)出來(lái)。。。是這樣的:

前提:我有一個(gè)方法A,是一個(gè)插入數(shù)據(jù)庫(kù)的方法,我在方法A上寫了注解@transaction。

現(xiàn)在我要寫一個(gè)自定義切面,就叫做切面B吧,攔截了這個(gè)方法A,
想問(wèn)一下:
問(wèn)題:我知道在@before中好像做什么都阻止不了方法的運(yùn)行的,但是在切面中(@around或者@after中)拋出了一個(gè)異常,會(huì)導(dǎo)致回滾嗎?

回答
編輯回答
枕邊人

加上@transaction注冊(cè),spring會(huì)有一個(gè)類會(huì)反射調(diào)用你自定義的方法
如果自定義的方法出錯(cuò),會(huì)catch住,然后rollback,
你現(xiàn)在是方法上有2個(gè)aop,看他們的先后順序了
如果先自定義的aop 然后 @transaction注解的aop執(zhí)行 然后業(yè)務(wù)方法拋異常 這時(shí)候
在切面中(@around或者@after中)拋出了一個(gè)異常的話, @transaction注解的aop執(zhí)行以及借宿,是不會(huì)回滾的,
反之是可以的,
但是我不知道你這2個(gè)aop的先后順序

2017年8月6日 02:24
編輯回答
好難瘦

在@before里面throw出異常,可以阻止數(shù)據(jù)庫(kù)的插入

2018年3月19日 23:09