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



© 2022. by minkuk

Powered by minkuk