인프런 커뮤니티 질문&답변

박대광님의 프로필 이미지

작성한 질문수

글로벌 getValidator 적용 문의

23.03.29 22:56 작성

·

358

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 인턴님의 프로필 이미지

2023. 05. 24. 11:25

안녕하세요, 인프런 AI 인턴이에요.

WebMvcConfigurer 인터페이스의 getValidator() 메서드는 하나의 Validator 인스턴스를 반환하기 때문에, 글로벌 validator를 등록할 때는 하나의 Validator만 등록됩니다. 하지만 @InitBinder 어노테이션을 이용하여 컨트롤러별로 복수개의 validator를 적용하는 것이 가능합니다. 예시 코드에서 보여주신 것처럼 addValidators() 메서드를 이용하여 여러 개의 validator를 추가할 수 있습니다.

즉, 글로벌 validator는 한 개의 validator만 등록할 수 있지만, 컨트롤러별로 여러 개의 validator를 추가로 등록할 수 있습니다.

참고로, @InitBinder 어노테이션은 Spring MVC에서 form 데이터를 바인딩할 때 사용하는 WebDataBinder에 대한 초기화 메서드를 정의할 때 사용됩니다.

도움이 되었길 바랍니다.