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

在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日