常见缘由是方法自身调用、异常被吃、异常抛出类型不对。
数据库
缘由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