У меня есть ExceptionHandler (весна и безопасность 5), который перехватывает все исключения, не обнаруженные другим ExceptionHandler, это прекрасно работает:
@ControllerAdvice(basePackageClasses = BaseBackendController.class)
@Order(Ordered.LOWEST_PRECEDENCE)
public class GlobalExceptionHandler {
@ExceptionHandler(value = {Exception.class, RuntimeException.class})
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) {
}
}
Но вышеупомянутый обработчик исключений также ловит AccessDeniedException, хотя я добавил аннотацию @Orderсо значением LOWEST_PRECEDENCE.
Как темп.Решение Я добавил это в defaultErrorHandler:
if(e instanceof AccessDeniedException){
throw (AccessDeniedException)e;
}
Это работает, но я подозреваю, что есть еще много исключений, связанных с безопасностью пружин, и я не хочу добавлять их все в свой defaultErrorHandler.
Есть кто-нибудьзнаете, почему AccessDeniedException перехватывается моим ExceptionHandler и не обрабатывается весенней безопасностью?