Как заставить мои аспекты Spring выполняться до @ Valid / @ Validated аннотации в методе контроллера пружины?
У меня есть этот сервис / метод контроллера:
public ResponseEntity<PolicyDTO> addPolicy(@Valid @RequestBody PolicyDTO policy)
throws InternalServerException, BadRequestException {
log.debug("Adding a new policy");
}
Обратите внимание на аннотацию @Valid в параметрах метода
Для этого контроллера мы определили следующий класс аспектов:
@Aspect
@Component
public class BackwardsCompatibilityHandler {
@Around("execution(* com.company.PolicyController.addPolicy(..))")
public Object ControllerMethod(JoinPoint jp)
{
// DO Code before and after the method call
}
Основная причина этого аспекта / прокси состоит в том, чтобы перехватывать вызовы методов и выполнять некоторую предварительную / последующую обработку входных параметров / возвращаемых результатов.
Основная проблема, с которой мы сталкиваемся сейчас, заключается в том, что@Valid аннотация обрабатывается до фактического выполнения кода до и после кода.
Любая идея о том, как мы можем сделать проверку проверки внутри нашего кода AOP? Я знаю, что есть способ сделать это, вручную вызывая валидатор внутри метода, но я не хотел бы слишком трогать существующий код ... так что любые идеи, кроме этой, если есть ...
Прямо сейчас порядок исполнения такой:
Проверка правильности - запускается аннотацией @ValidСобственный код - аспект - перед вызовом методаАктуальный вызов методаСобственный код - аспект - после вызова методаИ мы хотели бы иметь что-то более похожее (сначала наш код, а затем аннотацию Valid):
Собственный код - аспект - перед вызовом методаПроверка правильности - запускается аннотацией @ValidАктуальный вызов методаСобственный код - аспект - после вызова методаПожалуйста, пропустите ошибки компилятора или что-то подобное, этот код только для демонстрационных целей, это не настоящий код :)