Spring数据库事务失效的8大缘由,学习总结

常见缘由是方法自身调用、异常被吃、异常抛出类型不对。
数据库

缘由ide

备注spa

数据库引擎不支持事务代理

MySQL的InnoDB引擎支持事务,可是MyISAM不支持的。注意MySQL5.5.5以前默认引擎是MyISAM事务

类没有被Spring管理ci

注解@Service,类才被Spring加载成Beanget

方法不是publicit

注解@Transactional用于public的方法,或者开启AspectJ代理模式io

方法的自身调用问题table

经过Spring代理类在外部调用事务时@Transactional才生效

数据源没有配置事务管理器

为数据源配置事务管理器

方法被声明为不支持事务

@Transactional(propagation = Propagation.NOT_SUPPORTED)已经声明了该方法不支持事务

异常被吃了

异常处理时没有抛出

异常抛出类型错误

默认事务回滚异常是RuntimeException,能够指定其余异常:@Transactional(rollbackFor = Exception.class)

 

原文连接:Java技术栈https://mp.weixin.qq.com/s/6EpeHAF5UmFzEuaQPWjdTw

相关文章
相关标签/搜索