JAVA의 Hibernate-Validation을 통한 매개변수 검증
JAVA 서버 측 코드를 개발할 때 외부 매개변수의 적법성을 검증해야 할 필요성에 직면하게 되며, hibernate-validator는 일반적으로 사용되는 일부 사용할 수 있는 매개변수 확인 주석이 제공됩니다.
1.maven에서 hibernate-validator에 해당하는 jar를 소개합니다:
2. 모델에서 확인할 필드를 정의합니다(즉, 필드는 비어 있을 수 없으며 최대 길이는 14입니다).
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
public class PayRequestDto {
/**
* 결제 완료 시간
* */
@NotEmpty(message="결제 완료 시간은 비워둘 수 없습니다.")
@Size(max=14, message="결제 완료 시간은 비워둘 수 없습니다." {max}자리 초과" )
private String payTime;
public String getPayTime() {
return payTime;
}
public void setPayTime(String payTime) {
this.payTime = payTime;
}
}
3. 유효성 검사 도구 클래스 정의:
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import org.hibernate.validator.HibernateValidator;
import com.atai.framework.lang.AppException;
p>public class ValidationUtils {
/**
* 확인을 위해 최대 절전 모드 주석 사용
*
*/
private static Validator 유효성 검사기 = 유효성 검사
.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
/**
* 기능 설명:
* 〈주석 확인 매개변수〉
*
* @param obj
* @see [관련 클래스/메서드](선택 사항)
* @since [제품/모듈 버전](선택 사항)
*/
public static
{
Set
// 유효성 검사 예외 발생
if (constraintViolations.size( ) > 0) {
throw new AppException("0001", String.format("매개변수 확인 실패: %s", ConstraintViolations.iterator().next().getMessage())) p>
}
}
}
4. 매개변수 확인을 위해 코드에서 도구 클래스를 호출합니다.
ValidationUtils .validate(requestDto);
다음은 hibernate-validator의 일부 주석에 대한 설명입니다:
@AssertTrue는 부울 필드에 사용되며 true일 수 있습니다.
@AssertFalse 이 필드의 값은 false여야 합니다.
@CreditCardNumber는 신용카드 번호를 대략적으로 확인합니다.
@DecimalMax는 이 값보다 작거나 같을 수 있습니다. value
@DecimalMin은 값보다 크거나 같아야 합니다.
@Digits(integer=,fraction=) 정수, 분수 또는 소수인지 확인하세요. number
@Email은 유효한 이메일 주소인지 확인합니다.
@Future는 이 필드의 날짜가 미래 날짜에 속하는지 확인합니다.
@Length(min =,max=)에 속하는지 확인합니다. 필드 길이가 min과 max 사이인지 여부, 문자열에만 사용할 수 있습니다.
@Max 이 필드의 값은 이보다 작거나 같을 수 있습니다. 이 값으로
@Min 이 필드의 값 값은 이 값보다 크거나 같을 수만 있습니다.
@NotNull은 null일 수 없습니다.
@NotBlank 는 비워둘 수 없으며 확인할 때 공백은 무시됩니다.
@NotEmpty는 Null일 수 없습니다. 여기서 null은 빈 문자열을 나타냅니다.
@Null 필드가 비어 있는지 확인하세요
@Past 필드의 날짜가 과거인지 확인하세요.
@Pattern (regex=,flag=) 주석이 달린 요소는 지정된 정규 표현식을 준수해야 합니다.
@ Range(min=,max=,message=) 주석이 달린 요소는 적절한 범위 내에 있어야 합니다.
@Size(min=, max=) 필드의 크기가 최소와 최대 사이인지 확인하세요. 문자열, 배열, 컬렉션, 맵 등이 될 수 있습니다.
@URL(protocol=, 호스트, 포트)는 프로토콜, 호스트 등이 제공되는 경우 유효한 URL인지 확인합니다. 제공된 조건도 충족해야 합니다.
@Valid 이 주석은 주로 다른 개체를 포함하는 필드에 사용됩니다. 컬렉션, 지도 또는 배열의 필드이거나 필드가 다른 개체에 대한 직접 참조이므로 현재 개체를 확인할 때 필드에서 참조하는 개체도 확인됩니다.