首页 > 其他分享 >1、Spring事务失效的几种原因

1、Spring事务失效的几种原因

时间:2022-11-17 14:44:12浏览次数:46  
标签:事务 Spring Transactional 几种 失效 修饰 注解 public

Spring事务失效的几种原因

1、Bean没有被Spring管理,即类上没有加入@Service、@Component等注解。

2、方法没有使用public修饰

@Transactional注解的方法必须用public关键词修饰,方法的修饰符为:privatedefault、`protected时都不会生效。

3、数据源没有开启事务管理器,如下:

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

4、事务的传播机制未正确使用

@Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void updateOrder(Order order) {
        // update order
    } 
}

5、使用了异常处理,但重新抛出的异常不是运行时异常例如,抛出了:

throw new Exception("更新错误");

此时需要在注解上加入:

@Transactional(rollbackFor = Exception.class)

6、注解修饰的方法为非public时,@Transactional不会起作用。

7、同一类内,调用带有@Transactional注解的方法不会生效

8、在@Transactional注解修饰的方法内使用try...catch...捕获异常,在catch内不抛出新的异常

9、使用的数据库引擎不支持事务

标签:事务,Spring,Transactional,几种,失效,修饰,注解,public
From: https://www.cnblogs.com/zhangruifeng/p/16899442.html

相关文章