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

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

首先你要知道一点,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("操作失败!");
        }
    }