额,很难表达出来。。。是这样的:
前提:我有一个方法A,是一个插入数据库的方法,我在方法A上写了注解@transaction。
现在我要写一个自定义切面,就叫做切面B吧,拦截了这个方法A,
想问一下:
问题:我知道在@before中好像做什么都阻止不了方法的运行的,但是在切面中(@around或者@after中)抛出了一个异常,会导致回滚吗?
额,很难表达出来。。。是这样的:
前提:我有一个方法A,是一个插入数据库的方法,我在方法A上写了注解@transaction。
现在我要写一个自定义切面,就叫做切面B吧,拦截了这个方法A,
想问一下:
问题:我知道在@before中好像做什么都阻止不了方法的运行的,但是在切面中(@around或者@after中)抛出了一个异常,会导致回滚吗?
15 回答8.4k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
加上@transaction注册,spring会有一个类会反射调用你自定义的方法
如果自定义的方法出错,会catch住,然后rollback,
你现在是方法上有2个aop,看他们的先后顺序了
如果先自定义的aop 然后 @transaction注解的aop执行 然后业务方法抛异常 这时候
在切面中(@around或者@after中)抛出了一个异常的话, @transaction注解的aop执行以及借宿,是不会回滚的,
反之是可以的,
但是我不知道你这2个aop的先后顺序