您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

了解Spring事务-当一个事务方法调用另一个事务方法时会发生什么?

了解Spring事务-当一个事务方法调用另一个事务方法时会发生什么?

两个答案:

a)不要这样做。使用@Transactional在服务层或DAO层,但不能同时(服务层是通常的选择,因为你可能希望每一个服务方法一个交易)

b)如果这样做,会发生什么情况取决于注释的propagation属性@Transactional并在本节中进行描述:10.5.7事务传播。基本上:PROPAGATION_required意味着同一事务将用于两种方法,同时PROPAGATION_REQUIRES_NEW开始新事务。

关于你的评论

当然,我不断阅读并意识到,当我使用代理时,第二种方法将不会由事务代理管理,因此就像其他任何方法调用一样。

在你的情况下,这是不正确的(仅当两个方法都在同一类中时)。

如果一个bean有方法ab,和a电话b,然后b叫上实际的方法,而不是代理,因为它是从代理中调用(豆不知道它是代理到外面的世界)。

proxy      bean  
a() -->    a()
            |
            V  
b() -->    b()

但是,在你的情况下,服务将具有注入的dao对象,该对象本身就是代理,因此你将遇到以下情况:

           proxy      bean
service    a() -->    a()
                       |
             /---------/
             |                 
             V
dao        b() -->    b()
Java 2022/1/1 18:24:46 有510人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶