凌晨四点的打铁声 2021-09-15 20:49 采纳率: 100%
浏览 64
已结题

在controller的方法上可以加@Transactional有效果吗

controller方法上调用了好几个service,可以在这个方法上加@Transactional来添加事务功能吗?

  • 写回答

1条回答 默认 最新

  • sirwsl Java领域新星创作者 2021-09-15 23:53
    关注

    首先你要知道一点,controller是不建议使用事物的,一般都是在service进行处理
    其次使用事物时需要再启动类配置注解,使其生效
    最后还有一点,你要明白是异常一旦异常被捕获或者说不抛出异常,这个时候注解是没用的。
    接下来还要明白一点,注解打在方法上,改方法所调用的方法也需要有注解支持。

    最后解决办法如下,可以通过设置手动回滚

    @RequestMapping(value = "test", method = {RequestMethod.GET})
        @Transactional(rollbackFor = Exception.class)
        public String test(String id) {
            try {
            //省略业务代码……
            } catch (Exception e) {
                log.error("操作异常",e);
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//contoller中增加事务
                return failure("操作失败!");
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 9月15日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探