浅谈对Spring中的事物回滚的理解及@Transactional注解的用法
事物回滚
可以简单理解为,在sping中发生异常(默认为RuntimeException)时,将某个数据库或某个对象恢复为对其进行操作之前的状态即为事物回滚。一言以蔽之,要么成功(操作成功),要么失败(发生异常,事物回滚,操作失败)。
@Transational 的使用
- 应用于某个方法之上,直接注解在方法上即可。
- 当加在类上,则表示对该类里面所有的方法都应用相同配置的事务。
############注意#############
/*
- spring中的默认情况下时运行异常(RuntimeException)才会进行事物的回滚***要让Exception异常也进行回滚操作,在调用该方法前加上: @Transactional(rollbackFor = Exception.class)
- @Transactional 只能用在public修饰符修饰的方法下,用protectd、private修饰的方法下会失效详情可以参考这篇文章https://www.jianshu.com/p/5687e2a38fbc
- @Transactional 只有在使用了该注解的方法被外界所调用时有效,而当被同类中未使用该注解的方法调用时无效。原因和springAOP的动态代理机制有关。有关动态代理的知识可以参考下这篇博客https://www.cnblogs.com/xiaoluo501395377/p/3383130.html
*/