Spring Framework中常见的事务传播陷阱(译文)

最近看到Medium上一篇讨论Spring Framework中事务传播的文章,解释了几种常见的问题,解释的不错,这里直接翻译吧(意译为主,粗体和斜体是我自己加上的)。

 

译文:

这是我的第一篇文章,我打算给大家总结一下开发者在使用Spring事务时,常常会犯的和事务传播相关的错误。

在这之前,我们先回忆一下Spring中事务是怎样传播的。

我们先看下Ken Tousen做的有关事务传播注解的笔记(译注:这里指@Transactional注解的propagation属性),这会帮助我们更清楚地记忆。

 

Spring Framework中常见的事务传播陷阱(译文)

 

1. 私有方法

当公有方法调用私有方法时,不会创建新事务。(译注:这里有点问题,见下面评论)

1 @Transactional 2 public class MusicPlayerService { 3 4 @Autowired 5 Song song; 6 7 @Autowired 8 MusicCatalogueService musicCatalogueService; 9 10 public void playSong() { 11 scrobble(); 12 song.play(); 13 } 14 15 @Transactional(propagation = Propagation.REQUIRES_NEW) 16 private void scrobble() { 17 musicCatalogueService.scrobble(song); 18 } 19 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywygd.html