1. @InitBinder
- WebDataBinder 객체를 초기화하는 데 사용되는 메서드를 표시하는 어노테이션입니다.
- 컨트롤러에서 요청 데이터의 바인딩과 변환을 제어하고 사용자 정의하는데 유용한 도구입니다.
WebDataBinder
- 스프링의 데이터 바인딩과 유효성 검사 기능을 제공합니다.
- 설정을 조정하여 특정 데이터 형식이나 커스텀 타입을 제대로 처리할 수 있습니다.
항목 | 설명 |
문자열 기반 요청 값 변환 |
요청 파라미터, 경로 변수, 헤더, 쿠키 등의 문자열 값을 컨트롤러 메서드의 타겟 타입으로 변환
|
적용 대상 |
- 요청 파라미터
- 경로 변수 (PathVariable) - 헤더 값 (RequestHeader) - 쿠키 값 (CookieValue) |
요청 파라미터 바인딩 |
클라이언트로부터의 요청 파라미터를 모델 객체에 바인딩
|
모델 객체 값 포맷팅 |
HTML 폼 렌더링 시, 모델 객체의 값을 문자열로 변환하여 출력 (예: @ModelAttribute로 전달된 데이터 포맷)
|
예시 |
- 요청 파라미터 @RequestParam으로 바인딩
- 경로 변수 @PathVariable로 바인딩 - 객체에 자동으로 값을 할당하는 @ModelAttribute |
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. Filters (0) | 2025.04.11 |
---|---|
[Spring MVC] 4-3. Handler Methods: Controller Advice (0) | 2023.10.17 |
[Spring MVC] 4-2. Handler Methods: Type Conversion (0) | 2023.10.17 |
[Spring MVC] 4-1. Handler Methods: Method Arguments (2) | 2023.10.17 |
[Spring MVC] 1-2. DispatcherServlet: Special Bean Types (0) | 2023.10.16 |