spring事务回滚的原理
时间: 2023-08-15 07:14:29 浏览: 77
Spring事务回滚的原理是基于ACID特性和@Transactional注解的机制。当在执行某个方法时,如果方法中有包含对数据库的插入或者更新操作,并且在当前事务上下文抛出了异常,Spring会对已经进行的数据库操作进行回滚,恢复到原来的状态。\[1\]
使用Spring的事务管理功能后,Spring会在启动时解析生成相关的bean,并查看拥有@Transactional注解的类和方法。然后为这些类和方法生成代理,并根据@Transactional的相关参数使用动态代理进行相关配置注入。这样,在代理中就会自动处理事务(开启正常提交事务,异常回滚事务)。\[2\]
需要注意的是,@Transactional注解可以作用于接口、接口方法、类以及类方法上。当作用于类时,该类的所有public方法都将具有事务的特性。但是Spring建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时才会生效。另外,@Transactional注解只能应用到public方法上,作用于protected、private时,会被忽略,也不会抛出任何异常,这是由Spring AOP的本质决定的。\[3\]
#### 引用[.reference_title]
- *1* *3* [Spring 事务回滚原理和方法](https://blog.csdn.net/weixin_44201216/article/details/97397530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [spring的事务回滚机制,事务原理](https://blog.csdn.net/qq_45076180/article/details/106496486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]