可以简单点 2023-03-07 23:55 采纳率: 80%
浏览 24

spring事务控制。

spring事务中,方法A中调用了方法b,方法A和方法B是在同一个类中,方法A加了@Transactional注解, 我怎样做才能让方法B不受方法A中的事务控制?

  • 写回答

3条回答 默认 最新

  • 「已注销」 2023-03-08 00:10
    关注

    “Devil组”引证GPT后的撰写:

    • 如果想让方法B不受方法A中的事务控制,则可以将方法B移动到另一个类中,或者将方法B标记为不受事务控制。

    以下是一些可能的解决方案:

    将方法B移动到另一个类中
    将方法B移动到另一个类中可以确保它不会受到方法A中的事务控制。您可以在方法B所在的类上使用@Transactional(propagation = Propagation.REQUIRES_NEW)注解来确保该方法始终在自己的事务中运行。这将创建一个新的事务,使得方法B可以独立于方法A运行。
    
    将方法B标记为不受事务控制
    如果您不想将方法B移动到另一个类中,您可以使用@Transactional(propagation = Propagation.NOT_SUPPORTED)注解来标记方法B。这将使方法B在没有事务的情况下运行,即使它被调用时正处于方法A中的事务中。
    

    示例代码:

    @Service
    public class MyService {
    
        @Transactional
        public void methodA() {
            // ...
            methodB();
            // ...
        }
    
        @Transactional(propagation = Propagation.NOT_SUPPORTED)
        public void methodB() {
            // ...
        }
    }
    
    
    

    ,methodA()使用了@Transactional注解,而methodB()则使用了@Transactional(propagation = Propagation.NOT_SUPPORTED)注解,这意味着methodB()不会受到methodA()中的事务控制。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月8日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c