➊ 사용자 정의 애너테이션 @BookId는 Method, Field, Annotation_type을 정의하며, 이는 런타임할 때 적용됩니다. 그리고 도메인 클래스에 @BookId가 부여된 멤버 변수는 BookIdValidator 클래스로 유효성 검사를 수행합니다.
➋ @BookId는 필수 속성(message, groups, payload)을 포함합니다. @BookId에 대한 유효성 검사를 할 때 오류가 발생하면 메시지 리소스 파일 messages.properties에 설정된 BookId.NewBook.bookId의 메시지를 출력합니다.
4. com.springmvc.validator 패키지에 BookIdValidator 클래스를 생성하고 다음 내용을 작성합니다.
코드13-9 BookIdValidator.java
package com.springmvc.validator;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.springframework.beans.factory.annotation.Autowired;
import com.springmvc.exception.BookIdException;
import com.springmvc.service.BookService;
import com.springmvc.domain.Book;
public class BookIdValidator implements ConstraintValidator<BookId, String> {
@Autowired
private BookService bookService;