Как зафиксировать или откатить транзакцию в методе контроллера SpringMVC - PullRequest
0 голосов
/ 06 декабря 2018

Я изменил какой-то старый код и столкнулся со странной проблемой:

Мне нужно зафиксировать или откатить транзакцию на основе результата возврата метода сервиса в методе моего контроллера вручную .Ниже приведен код, который я хочу заархивировать. Можно ли это сделать?

Примечание. Я знаю, что наиболее подходящий способ - это внести некоторые изменения в код службы и позволить коду службы определять откат или фиксацию.Но по некоторым причинам я не могу изменить сервисный код, я могу изменить только код контроллера.

@RequestMapping("processData")
public void processData(String id){
    String result = dataService(id);
    if("success".equals(result)){
        //commit transaction
    }else{
       //rollback transaction
    }
   //since there some other codes in controller method,so exception might not be a good choice
   //.....
}

1 Ответ

0 голосов
/ 06 декабря 2018

используйте @Transactional(rollbackFor=Exception.class), и есть еще несколько атрибутов, вы можете проверить документы Spring.

...