Проверить значение компонента записи во время строительства с помощью пользовательской аннотацииJAVA

Программисты JAVA общаются здесь
Anonymous
Проверить значение компонента записи во время строительства с помощью пользовательской аннотации

Сообщение Anonymous »

Я пытаюсь проверить компоненты записи, используя пользовательскую аннотацию, чтобы создание нового объекта записи не сбоится, если значение недействительным. < /p>
Использование Micronaut v3.8.6 и Java 19 (предварительные функции активированы), определяя герметичный интерфейс < /p>
19 (предварительный просмотр), определяя герметичный интерфейс < /p>
.

Код: Выделить всё

@Introspected
public sealed interface UserId {
record Identifier(@Positive long value) implements UserId {}
record MailAddress(@EMail String value) implements UserId {}
}

< /code>
Использование этой аннотации < /p>
@Target({PARAMETER, RECORD_COMPONENT, TYPE_USE, CONSTRUCTOR, FIELD, METHOD, ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
public @interface EMail {

String message() default "is not a valid email address: ({validatedValue})";
}
< /code>
Ссылка на завод < /p>
@Factory
public class AppConfig {
@Singleton
public ConstraintValidator eMailStringConstraintValidator() {
return (value, annotationMetadata, context) -> EMailAddressConstraints.isValid(value);
}
}
, где метод isvalid просто возвращает логическое, но не было исключено. Чтобы убедиться, что это в основном работает, я аннотировал параметр метода контроллера. Передача недопустимой строки не удается, как и ожидалось. < /P>
Почему аннотация игнорируется при создании записи? Кстати, я попытался заставить его работать с объявлением канонического конструктора с аннотированными параметрами явно ...

Подробнее здесь: https://stackoverflow.com/questions/757 ... annotation

Вернуться в «JAVA»