永发信息网

@transactional 会对try catch 进行回滚吗

答案:2  悬赏:60  手机版
解决时间 2021-01-31 17:18
  • 提问者网友:自食苦果
  • 2021-01-30 17:39
@transactional 会对try catch 进行回滚吗
最佳答案
  • 五星知识达人网友:神也偏爱
  • 2021-01-30 18:42
spring 的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚;
异常中unchecked异常包括error和runtime异常,需要try catch或向上抛出的异常为checked异常比如IOException,也就是说程序抛出runtime异常的时候才会进行回滚,其他异常不回滚,可以配置设置所有异常回滚: 
@Transactional(rollbackFor = { Exception.class }) 
当有try catch后捕获了异常,事务不会回滚,如果不得不在service层写try catch 需要catch后 throw new RuntimeException 让事务回滚; 
Spring的AOP即声明式事务管理默认是针对unchecked exception回滚。也就是默认对R untimeException()异常或是其子类进行事务回滚;checked异常,即Exception可try{}捕获的不会回滚,如果使用try-catch捕获抛出的unchecked异常后没有在catch块中采用页面硬编码的方式使用spring api对事务做显式的回滚,则事务不会回滚, “将异常捕获,并且在catch块中不对事务做显式提交=生吞掉异常” ,要想捕获非运行时异常则需要如下配置
具体配置和解决办法
全部回答
  • 1楼网友:封刀令
  • 2021-01-30 18:54
安装插件可以这么做,但不能体现这个IDE的好用之处 ,因为工具本身有一个可以管理插件的工具,并且所有插件都是可以在线安装的,非常方便。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯