Я использую Spring Boot 2.2.6-Release, и мой контроллер выглядит следующим образом
@Validated
public interface UserServiceApi {
ResponseEntity<User> createUser(@PathVariable("orgId") String orgId, @Valid @RequestBody User user);
}
У меня есть контроллер, реализующий интерфейс. Я вижу, что пользовательский ConstraintValidator для пользователя вызывается дважды. Как только я вижу с ConstraintValidationContext
basePath=""
, а другой с
basePath=createUser.user
, я вижу, что у одного из них CGlibProxy перехватывает его. Согласно весенней документации
Функция проверки метода, поддерживаемая Bean Validation 1.1, автоматически включается, пока реализация JSR-303 (например, валидатор Hibernate) находится в пути к классам. Это позволяет аннотировать методы bean-компонентов с помощью ограничений javax.validation по их параметрам и / или по их возвращаемому значению. Целевые классы с такими аннотированными методами необходимо аннотировать с помощью аннотации @Validated на уровне типа, чтобы их методы искали встроенные аннотации ограничений.
Так что я делаю неправильно?