package org.springframework.issues; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.hibernate.validator.method.MethodConstraintViolationException; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Aspect @Component @Order(Ordered.HIGHEST_PRECEDENCE + 1) public class ValidationExceptionConverterAspect { @Pointcut("@within(org.springframework.validation.annotation.Validated)") protected void validated() { } @AfterThrowing(value = "validated()", throwing = "t") public void invoke(Throwable t) throws ValidationException { if (t instanceof MethodConstraintViolationException) { MethodConstraintViolationException methodConstraintViolationException = (MethodConstraintViolationException) t; throw new ValidationException(methodConstraintViolationException); } } }