使用ExceptionHandler时如何回滚事务

时间:2019-12-22 00:36:54

标签: spring-boot transactions spring-rest

将交易放在一块文本上时,应该在发生异常时回滚。如果没有@ExceptionHandler可以处理错误,它将执行此操作。有问题的异常是RunTimeException,但是即使我仍然希望任何异常导致回滚,我还是将事务放在整个动作链上进行rest调用。

public class TransactionalFilter implements Filter {
    @Override
    @Transactional(rollbackOn = Exception.class)
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        chain.doFilter(request, response);
    }
...

这一直有效,直到我放入任何ExceptionHandler之类的

@ExceptionHandler
public ResponseEntity handleException(Exception exception) {
    return ResponseEntity.badRequest().body("Something happened");
}

我只尝试了通用处理程序或更具体的异常,如果异常被异常处理程序捕获,则会发生这种情况。如何同时使用两者?

根据@Transactional rollback along with @ExceptionHandler问题,它应该具有更严格的范围,但在过滤器上似乎并非如此。

0 个答案:

没有答案