自定义切面的问题

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

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

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

阅读 2.8k
2 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题