작성
·
372
0
안녕하세요 수업중에 글로벌 validator를 등록하는 소스를 보여주셨는데요.
궁금한 게 있어 질문 드립니다.
@SpringBootApplication
public class ItemServiceApplication implements WebMvcConfigurer {
public static void main(String[] args) {
SpringApplication.run(ItemServiceApplication.class, args);
}
@Override
public Validator getValidator() {
return new ItemValidator();
}
}
글로벌 적용 시 사용하는 WebMvcConfigurer를 들어가봐도
반환 타입이 Validator[]는 없고 Validator만 존재하는데, 여러 개의 validator를 등록이 가능할까요?
아래는 컨트롤러에 적용하는 소스인데 여기는 함수를 까보니 여러 개의 인자를 받을 수 있도록 되어 있더라구요.
@InitBinder
public void init(WebDataBinder dataBinder) {
//dataBinder.addValidators(itemValidator);
dataBinder.addValidators(itemValidator, memberValidator, storeValidator);
}
글로벌 적용은 복수개의 validator를 어떻게 적용할 수 있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
WebMvcConfigurer 인터페이스의 getValidator() 메서드는 하나의 Validator 인스턴스를 반환하기 때문에, 글로벌 validator를 등록할 때는 하나의 Validator만 등록됩니다. 하지만 @InitBinder 어노테이션을 이용하여 컨트롤러별로 복수개의 validator를 적용하는 것이 가능합니다. 예시 코드에서 보여주신 것처럼 addValidators() 메서드를 이용하여 여러 개의 validator를 추가할 수 있습니다.
즉, 글로벌 validator는 한 개의 validator만 등록할 수 있지만, 컨트롤러별로 여러 개의 validator를 추가로 등록할 수 있습니다.
참고로, @InitBinder 어노테이션은 Spring MVC에서 form 데이터를 바인딩할 때 사용하는 WebDataBinder에 대한 초기화 메서드를 정의할 때 사용됩니다.
도움이 되었길 바랍니다.