실제로 @constraint를 통해 사용자 정의 주석을 정의하는 데 사용할 수있는 메소드입니다.
@constraint (validatedby = xxxx.class)
아래는 전면 및 백엔드 매개 변수 확인을 구현하기 위해 만든 Java 사용자 정의 주석의 코드 예입니다.
관심이 있으시면주의 깊게 읽고 신중하게 배우십시오.
패키지 Sonn.sonAnnotation; import java.lang.annotation.documented; import java.lang.annotation.elementtype; import java.lang.annotation.retention; import java.lang.annotation.retentionpolicy; import java.lang.annotation.target.comport javax.validation.ConstraintValidator;import javax.validation.ConstraintValidatorContext;import javax.validation.Payload;import sonn.util.StringUtill;/*** @ClassName: IsValidString * @Description: Custom annotations implement front and backend parameter verification to determine whether they contain illegal characters* @author Unnamed* @Date 2016-7-25 8:22:58 pm * @version 1.0 */@target ({eleMpertype.field, elementType.Method})@retention (rendentionPolicy.runtime) @constraint (validatedby = isvalidString.validStringChecker.class) @documentedPublic@interstring it isvalid {string it the stress (interdscome) 유효하지 않은."; class <?> [] groups () default {}; 클래스 <? payload> [] payload () default {}을 확장합니다. Class ValidStringChecker는 제약 조건 Validator <IsValidString, String> {@override public void initialize (IsValidString arg0) {} @override public boolean isvalid (String Strvalue, stringtaintValidatorcontext context) {if (stringUtill.istRingempty (stringtringempty)) {return; } if (strvalue.contains ( "<")) {return false; } true를 반환합니다. }}}위의 코드는 @constraint (validatedby = isvalidstring.validstringchecker.class)를 통해 주석의 메소드 논리를 정의합니다.
이 내부 클래스는 제약 조건 Validator <isvalidstring, string> 인터페이스를 구현합니다
공식 문서는 다음과 같이 설명합니다.
javax.validation
인터페이스 제한 Validator <a는 주석, t>를 확장합니다
•
--------------------------------------------------------------------------------------------------------------------------------
public interface restaintvalidator <a는 주석을 확장하고, t> 주어진 객체 유형 T에 대한 주어진 제약 조건 A를 검증하기 위해 논리를 정의합니다.
구현은 다음 제한을 준수해야합니다.
• t는 비 매개 변수화 된 유형으로 해결해야합니다
• 또는 T의 일반 매개 변수는 무한한 와일드 카드 유형이어야합니다.
주석을 지원하는 ValidationTarget은 구속 조건 Validator 구현에 적용하여이를 교차 매개 변수 제약 조건을 지원하는 것으로 표시 할 수 있습니다. 자세한 내용은 supportedValidationTarget 및 제약 조건을 확인하십시오.
구현 된 IsValid 방법은이 인터페이스의 검증 방법입니다.
효과를 테스트하고 엔티티 클래스 필드에 주석을 추가하여 확인할 수 있습니다.
기사 페이지를 작성하고 기사 제목에 '<'를 추가하고 제출하십시오.
제출은 500의 오류로 실패하여 주석이 적용됨을 나타냅니다.
그러나 여전히 문제가 있습니다. 내 블로그 웹 사이트는 오류 메시지를 직접 인쇄 할 수 없습니다. 여전히 오류 페이지를 만들어야합니다.
이것은 간단하고 web.xml 아래에 오류 페이지 경로를 추가 한 다음 페이지를 만듭니다.
<오류 페이지>
<Error-Code> 500 </error-code>
<위치> /error.jsp </location>
</오류 페이지>
먼저 몇 가지 기본 개념을 소개하겠습니다.
1.java는 @interface xx {}로 주석을 정의합니다.
주석은 실제로 신비하지 않고 단지 마크입니다. 프로그램이 마크에서 실행되면 해당 논리를 실행합니다. 주석 자체는 수업입니다.
2. 주석을 정의 할 때 일부 주석을 표시하면 특정 의미를 나타낼 수 있습니다.
@retention (retentionpolicy.source) // 주석은 소스 코드에만 존재하며 클래스 바이트 코드 파일에 포함되지 않습니다.
@retention (rendentionpolicy.class) // 기본 유지 정책, 주석은 클래스 바이트 코드 파일에 존재하지만 런타임 중에는 얻을 수 없습니다.
@retention (rendentionpolicy.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 (retentionpolicy.runtime)을 추가하는 방법이 있지만 주석에 메소드를 작성하지 않습니다. 그들은 반사 메커니즘을 사용하여 런타임에 주석을 얻은 다음 해당 논리를 직접 작성합니다 (소위 주석 파서).
아마도 비슷한 글을 쓰는 방법 :
import java.lang.annotation.documented; import java.lang.annotation.elementtype; import java.lang.annotation.inherited; import java.lang.annotation.retention; import java.lang.annotation.restation.respolicy; import java.lang.annotation.target; ElementType.field, ElementType.Method}) @retention (retentionpolicy.runtime) public @interface validate {public int min () 기본값 1; public int max () 기본 10; Public Boolean isnotnull () 기본값;}나중에 실행할 때 반사를 사용하여 주석을 얻으려면 세부 사항에 대해서는 논의하지 않습니다.
인터넷에서 기술 기사를 찾기 전에 이런 종류의 기술 기사를 발견했습니다. 그 당시에는 큰 혼란을 가져 왔습니다. 나는 내가 원한다고 생각한다.
전면 및 백엔드 매개 변수 확인을 구현하기위한 Java 사용자 정의 주석의 위의 예는 내가 공유하는 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.