H5W3
当前位置:H5W3 > 其他技术问题 > 正文

自定义切面的问题

额,很难表达出来。。。是这样的:

前提:我有一个方法A,是一个插入数据库的方法,我在方法A上写了注解@transaction。

现在我要写一个自定义切面,就叫做切面B吧,拦截了这个方法A,
想问一下:
问题:我知道在@before中好像做什么都阻止不了方法的运行的,但是在切面中(@around或者@after中)抛出了一个异常,会导致回滚吗?

回答:

加上@transaction注册,spring会有一个类会反射调用你自定义的方法
如果自定义的方法出错,会catch住,然后rollback,
你现在是方法上有2个aop,看他们的先后顺序了
如果先自定义的aop 然后 @transaction注解的aop执行 然后业务方法抛异常 这时候
在切面中(@around或者@after中)抛出了一个异常的话, @transaction注解的aop执行以及借宿,是不会回滚的,
反之是可以的,
但是我不知道你这2个aop的先后顺序

回答:

在@before里面throw出异常,可以阻止数据库的插入

本文地址:H5W3 » 自定义切面的问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址