栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

两个答案:

a)不要这样做。使用

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

b)如果这样做,会发生什么情况取决于注释的

propagation
属性,
@Transactional
并在本节中进行描述:10.5.7事务传播。基本上:
PROPAGATION_REQUIRED
意味着同一事务将用于两种方法,同时
PROPAGATION_REQUIRES_NEW
开始新事务。

关于您的评论:

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

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

如果一个bean有方法

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

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

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

proxy      beanservice    a() -->    a() |  /---------/  |        Vdao        b() -->    b()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号