一些在spring事务上需要注意的问题

今天在无意间看到的这个问题,spring事务事关紧要,以此记录,以备后续之需:

一,开启事务首先看数据库本身对应的库、表所设置的引擎是什么,Myisam是不支持事务,InnoDB是支持事务的

二,@Transactional所注解的方法是否为public

三,@Transactional所注解的方法所在的类,是否有@Service或@Component注解,如果没有,事务不生效

四,如需定义在方法上的事务生效,调用方需在这个方法所在类的外面。(类内部的其他方法调用了这个注解了@Transactional的方法,事务是不会生效的

五,注解为事务范围的方法中,事务的回滚仅仅对于 unchecked 的异常有效。对于checked的异常无效。也就是说事务回滚仅仅发生在出现Runtime Exception或Error的时候。如果希望一般的异常也能触发事务回滚,需要在注解了@Transactional的方法上将@Transactional回滚参数设为:

@Transactional(rollbackFor=Exception.class)

六,非springboot项目,需要检查spring配置文件xml中:

1.扫描包范围是否配置好,否则不会在启动时spring容器中创建和加载对应的bean对象

<context:component-scan base-package="com.hopelee" ></context:component-scan>

2.事务是否已经配置成开启

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值