Spring Validation (2)

Custom Validation을 사용해보자.

1. validation에 사용할 annonation을 만들자.

  • 우선 validation 패키지를 현재 패키지 아래 새로 하나 생성 validation package 생성된 package에서 new - annotation 선택 후
@Constraint(validatedBy = CourseCodeConstraintValidator.class) // Helper class that contains business rules validation logic
@Target( { ElementType.METHOD, ElementType.FIELD }) // can apply our annotation to a method or field
@Retention(RetentionPolicy.RUNTIME) // retain this annotation in the java class file, process it at runtime
public @interface CourseCode {

	// define default course code
	public String value() default "LUV";

	// define default error message
	public String message() default "must start with LUV";

	// define default groups
	public Class<?>[] groups() default {}; // can group related constraints

	// define default payloads
	public Class<? extends Payload>[] payload() default {}; // provide custom details about validation failure (severity level, error code etc)
}
  • value와 message는 annotation의 parameter로 사용된다.
    @CourseCode(value="ABC", message="must start with ABC")
    private String courseCode;
    

2. validation을 수행할 class를 만들자

  • 역시 같은 패키지에 Custom ConstraintValidator class를 생성
    public class CourseCodeConstraintValidator implements ConstraintValidator<CourseCode, String> {
      // value를 받을 변수를 정의하고,
      // Override Method 를 구현
    }
    

3. Override Method를 구현한다.

private String coursePrefix;

@Override
public void initialize(CourseCode theCourseCode) {
    coursePrefix = theCourseCode.value();
}

@Override
public boolean isValid(String theCode, ConstraintValidatorContext theConstraintValidatorContext) {

    boolean result = false;

    if (theCode != null) {
        result = theCode.startsWith(coursePrefix);
    }		

    return result;
}
  • isValid에서 Validation Logic을 구현

4. 생성된 annotation을 잘(?) 사용한다.


© 2017. All rights reserved.

Powered by Hydejack v7.5.0