Spring MVC DataBinder
Spring Web MVC
백기선님의 강의인 Spring Web MVC 강의를 듣고 공부한 내용을 정리한 글
DataBinder: @InitBinder
DataBinder는 요청 매개변수의 쿼리 파라미터나 폼에 들어있는 폼 데이터들같은 데이터들을 바인딩할 때 사용할 수 있었다.
이러한 DataBinder를 커스터 마이징할 수 있는데, 메소드에 @InitBinder
를 추가하고, 반환값을 void
로 하면 된다.
그리고 특이한 파라미터를 하나 받을 수 있는데 WebDataBinder
를 받을 수 있다.
이 파라미터는 반드시 존재해야한다.
메소드 내에서 WebDataBinder
를 사용해서 여러가지 바인딩을 커스터마이징 할 수 있는데, 가령 setDisallowedFields("id")
라는 설정을 하면, id를 폼에서 받아와도 바인딩해주지 않는다. 즉 블랙 리스트를 처리하는 것이 가능하며, 화이트 리스트 정의도 가능하다.
또한 addCustomFormatter()
을 사용하면 스프링이 기본적으로 지원하지 않는 타입도 받아줄 수 있다.
addValidators()
를 사용하면 Validator도 추가할 수 있다.
이런 경우 Spring framework가 지원하는 Validator
인터페이스를 구현하는 클래스에서 supports
() 메소드에 어떠한 도메인 클래스를 지원하는지 명시할 수 있고, validate
() 메소드에서 검증해야할 객체의 커스텀한 검증 로직을 만들 수 있다.
Validator
는 아예 빈으로 등록한 후 주입을 받아서 명시적으로 검증을 사용할 수 있다.
만약 위와 같은 경우라면 굳이 Validator
인터페이스를 구현할 필요는 없다.
다만 이 예시에서는 webDataBinder
에서 Validator
를 추가할 수 있다는 것을 보여주기 위함이라는 것을 알아두자.
Reference
인프런 백기선님의 스프링 Web MVC