将交易放在一块文本上时,应该在发生异常时回滚。如果没有@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问题,它应该具有更严格的范围,但在过滤器上似乎并非如此。