导语:事务传播机制是Spring事务中最容易踩坑的知识点之一!本文通过真实代码演示+日志分析,带你彻底搞懂7种传播行为,从此不再被面试官问倒!
面试官(优化版):事务传播机制到底怎么选?
通俗理解:
事务传播机制就像“多个任务协作时的分工规则”——当方法A调用方法B时,B的事务该如何处理?是跟着A干,还是自己单干?
下面由"弱到强"详细讲解Spring的7种传播规则(MANDATORY抛异常->SUPORT不处理->REQUIRDE新建->REQUIRES_NEW总是新建->NOT_SUPPORTED挂起->NEVER抛异常;DESTED嵌套)。
首先是准备两个方法:
// UserService
public void addUser() {
userMapper.insert(user); // 插入用户
}
// BlogService
public void addBlog() {
blogMapper.insert(blog); // 插入博客
}
1.MANDATORY
-
规则:必须跟着大哥干,没大哥就罢工(抛异常);如果当前存在事务,则加入该事务;如果当前没有事务,它会抛出异常。这种传播行为要求调用方法必须在一个现有的事务中运行
-
场景:强制要求方法在事务中被调用(如敏感操作审计)
-
代码验证:
// 直接调用会抛异常!
@Transactional(propagation = Propagation.MANDATORY)
public void addBlog() {
blogMapper.insert(blog);
}
// 没有事务的方法调用也会抛异常
public void addUser() {
userMapper.insert(user); // 插入用户
blogService.addBlog(); // 调用博客服务
}
-
异常日志:
No existing transaction found for transact

最低0.47元/天 解锁文章
290

被折叠的 条评论
为什么被折叠?



