1. @InitBinder
- WebDataBinder 객체를 초기화하는 데 사용되는 메서드를 표시하는 어노테이션입니다.
- 컨트롤러에서 요청 데이터의 바인딩과 변환을 제어하고 사용자 정의하는데 유용한 도구입니다.
WebDataBinder
- 스프링의 데이터 바인딩과 유효성 검사 기능을 제공합니다.
- 설정을 조정하여 특정 데이터 형식이나 커스텀 타입을 제대로 처리할 수 있습니다.
기능
문자열 기반 요청 값 변환
- 문자열 기반 요청 값을 컨트롤러 메서드의 타겟 타입으로 변환합니다.
- 요청 파라미터, 경로 변수, 헤더, 쿠키 등
요청 파라미터 바인딩
- 클라이언트로부터의 요청 파라미터를 모델 객체에 바인딩합니다.
모델 객체 값 포맷팅
- HTML 폼을 렌더링 할 때 모델 객체 값을 문자열로 포맷합니다.
2. PropertyEditor, Converter, Formatter 등록
- @InitBinder 메서드를 통해 컨트롤러에 특정 변환기를 등록할 수 있습니다.
PropertyEditor
@Controller
public class FormController {
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
// ...
}
- 날짜 문자열을 Date 객체로 변환
- SimpleDateFormat을 사용하는 CustomDateEditor를 WebDataBinder에 등록합니다.
Formatter
@Controller
public class FormController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addCustomFormatter(new DateFormatter("yyyy-MM-dd"));
}
// ...
}
- 날짜 문자열을 Date 객체로 변환
- DateFormatter 포맷터를 등록합니다.
3. @ControllerAdvice와의 관계
- @ControllerAdvice 클래스에 @InitBinder 메서드를 선언할 수 있습니다.
- 전역 범위에서 동작하여 모든 컨트롤러에서 해당 설정을 사용하게 됩니다.
출처
'Spring > Spring MVC' 카테고리의 다른 글
[Spring MVC] 2-4. Handler Methods: Controller Advice (0) | 2023.10.17 |
---|---|
[Spring MVC] 2-2. Handler Methods: Type Conversion (0) | 2023.10.17 |
[Spring MVC] 2-1. Handler Methods: Method Arguments (2) | 2023.10.17 |
[Spring MVC] 1-2. DispatcherServlet: Special Bean Types (0) | 2023.10.16 |
[Spring MVC] 1-1. DispatcherServlet: Context Hierarchy (0) | 2023.10.16 |