WebDataBinder

2023. 5. 1. 16:46Spring Framework/Web on Servlet Stack

웹 요청 파라미터에서 JavaBean 객체로 데이터를 바인딩하기 위한 특별한 DataBinder.

웹 환경을 위해 설계되었지만, 서블릿 API에 종속되지 않으며, ServletRequestDataBinder와 같은 더 구체적인 DataBinder 변형의 기본 클래스 역할을 합니다. 이는 주로 컨트롤러 메서드에서 폼 데이터를 처리하거나, JSON 데이터를 객체로 변환할 때 사용됩니다.

경고: 데이터 바인딩은 객체 그래프의 일부가 외부 클라이언트에 의해 접근되거나 수정되도록 노출됨으로써 보안 문제가 발생할 수 있습니다. 따라서 데이터 바인딩의 설계 및 사용은 보안과 관련하여 신중하게 고려되어야 합니다.

주요 기능:

  1. 데이터 바인딩: HTTP 요청 파라미터를 Java 객체의 속성에 바인딩합니다. 예를 들어, 폼 데이터를 전송할 때, 해당 데이터를 특정 객체에 자동으로 매핑할 수 있습니다.
  2. 유효성 검사: @Valid와 함께 사용하여, 데이터를 바인딩하는 과정에서 유효성 검사를 수행할 수 있습니다. 이를 통해 잘못된 데이터 입력을 방지할 수 있습니다.
  3. 변환기 설정: WebDataBinder는 특정 타입의 데이터를 변환하기 위한 PropertyEditorConverter를 등록할 수 있습니다. 예를 들어, String 타입의 데이터를 날짜 객체로 변환하는 커스텀 변환기를 설정할 수 있습니다.

사용 예시:

컨트롤러에서 @InitBinder 애노테이션을 사용하여 WebDataBinder를 설정할 수 있습니다.

@Controller
public class MyController {

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // 커스텀 에디터 등록 (예: 날짜 형식 변환)
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
    }

    @PostMapping("/submit")
    public String handleForm(@ModelAttribute("formObject") FormObject formObject, BindingResult result) {
        if (result.hasErrors()) {
            return "errorPage";
        }
        return "successPage";
    }
}

이 코드에서는 @InitBinder를 통해 날짜 형식을 변환하는 커스텀 변환기를 등록하고, POST 요청으로 전송된 데이터를 FormObject에 바인딩합니다.

WebDataBinder는 Spring MVC에서 데이터 바인딩과 유효성 검사를 효율적으로 처리하는 중요한 도구입니다.

'Spring Framework > Web on Servlet Stack' 카테고리의 다른 글

@RequestHeader  (0) 2024.10.09
Annotated Controllers[1]  (1) 2024.10.06
Filter  (0) 2023.05.19
Dispatcher Servlet  (0) 2023.05.02
Servlet  (0) 2023.04.17