На самом деле, это метод, который можно использовать для определения пользовательских аннотаций через @Constraint.
@Constraint (valytedBy = xxxx.class)
Ниже приведен пример кодового аннотации Java, который я сделал для реализации проверки параметров переднего и бэкэнда
Если вы заинтересованы в этом, пожалуйста, прочитайте это внимательно и изучите его тщательно:
Пакет Sonn.sonNannotation; импорт java.lang.annotation.documented; импорт java.lang.annotation.elementtype; импорт java.lang.annotation.retention; импорт java.lang.annotation.retentionpolicy; импорт java.lang.annotation.target.target. javax.validation.constraintvalidator; import javax.validation.constraintvalidatorContext; импорт javax.validation.payload; импорт sonn.util.stringutill;/*** @classname: isvalidString* @description: unnotation 2016-7-25 8:22:58 pm * @version 1.0 */@Target({ElementType.FIELD, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = IsValidString.ValidStringChecker.class)@Documentedpublic @interface IsValidString { String message() default "The string is неверный."; Class <?> [] Groups () default {}; Класс <? Extends Payload> [] PAYLOAD () DEFALT {}; класс ValidStringChecker реализует ConstraintValidator <isValidString, String> {@Override public void initiaze (isvalidString arg0) {} @Override public boolean isvalid (strvalue, constraintvalidator context) {if (stringutill.issstringempempty (strvalue) {return true; } if (strvalue.contains ("<")) {return false; } вернуть true; }}}Приведенный выше код определяет логику метода аннотации через @constraint (valytedby = isvalidstring.validstringchecker.class)-внутренний класс класса аннотаций с именем ValidStringchecker.
Этот внутренний класс реализует ConstraintValidator <isValidString, String> Interface
Официальная документация описывает это так:
Javax.validation
Интерфейс ConstraintValidator <A Edends Annotation, t>
•
----------------------------------------------------------------------------------------------------------------------------
Общественный интерфейс ConstraintValidator <A Extends Annotation, t> определяет логику для проверки заданного ограничения для данного типа объекта T.
Реализации должны соответствовать следующим ограничениям:
• T должен решить до не параметризованного типа
• или общие параметры T должны быть неограниченными типами подстановочных знаков
Annotation Поддержка valyValidationTarget может быть включена в реализацию ConstraintValidator, чтобы отметить его как поддерживающие перекрестные ограничения. Ознакомьтесь с поддержкой valyDvalidationTarget и ограничения для получения дополнительной информации.
Реализованный метод ISValid является методом проверки этого интерфейса.
Проверьте эффект и добавьте аннотации в поле класса сущности, которое будет проверено:
Напишите страницу статьи, добавьте «<» в заголовке статьи и отправьте:
Отправка не удалась с ошибкой 500, указывая на то, что аннотация вступает в силу:
Но с этим все еще есть проблемы. Мой сайт блога не может распечатать сообщение об ошибке напрямую. Вам все еще нужно создать страницу ошибки.
Это просто, добавьте путь страницы ошибки в web.xml, а затем сделайте страницу:
<Ошибка страницы>
<ошибка-код> 500 </код ошибки>
<местоположение> /еррор.jsp </location>
</error-page>
Во -первых, давайте представим некоторые основные концепции:
1. Ява определяет аннотацию с @Interface xx {}.
Аннотация на самом деле не таинственна, это просто знак. Когда программа работает на отмечке, она выполняет соответствующую логику. Сами аннотации - класс.
2. При определении аннотаций маркировка некоторых аннотаций может представлять собой конкретные значения:
@Retention (hestentionpolicy.source) // Аннотация существует только в исходном коде и не содержит ее в файле байткода класса.
@Retention (hestententpolicy.class) // Политика удержания по умолчанию, аннотация будет существовать в файле байткода класса, но его нельзя получить во время выполнения.
@Retention (hardententpolicy.runtime) // Аннотация будет существовать в файле байт -кода класса и может быть получена посредством отражения во время выполнения.
(Средство выполнения стоит отметить, потому что это означает, что оно может быть извлечено из -за размышлений)
@Target (elementtype.type) // интерфейс, класс, перечисление, аннотация
@Target (elementType.field) // Постоянная для полей и перечислений
@Target (elementType.method) // Метод
@Target (elementType.parameter) // Параметры метода
@Target (elementType.constructor) // Конструктор
@Target (elementtype.local_variable) // локальные переменные
@Target (elementType.annotation_type) // Аннотация
@Target (elementType.package) // Пакет
Существует способ добавить @taget (xx) и @retention (hardententypolicy.runtime) при определении аннотаций, но не пишите методы в аннотациях. Они просто используют механизм отражения для получения аннотаций во время выполнения, а затем сами пишут соответствующую логику (так называемый анализатор аннотации)
Наверное, аналогичный способ написать:
Импорт java.lang.annotation.documented; импорт java.lang.annotation.elementtype; импорт java.lang.annotation.inherited; импорт java.lang.annotation.retention; импорт java.lang.annotation.retentionpolicy; import java.lang.nantation.target; Elementtype.field, elementtype.method}) @hareveration (hestententypolicy.runtime) public @Interface validate {public int min () по умолчанию 1; public int max () по умолчанию 10; Public Boolean isNotnull () по умолчанию True;}При запуске позже используйте размышления, чтобы получить аннотации, и я не буду обсуждать детали.
Я нашел такого рода технические статьи об этом, прежде чем искать технические статьи в Интернете, что в то время принесло мне большую путаницу. Я не думаю, что хочу.
Приведенный выше пример настраиваемой аннотации Java для реализации проверки параметров фронта и бэкэнд является всем контентом, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.