바인딩(Binding)은 사용자 입력 값을 객체의 필드에 매핑하는 과정을 의미합니다.
일반적으로 HTML 폼 등에서 사용자가 입력한 데이터를 처리할 때 자주 사용됩니다.
스프링 프레임워크에서는 다양한 방식으로 바인딩을 지원합니다.
BindingResult 는 스프링 프레임워크에서 바인딩 결과를 담는 객체입니다. BindingResult 객체는 컨트롤러 메서드에서
@Valid 어노테이션과 함께 사용되며, 데이터 바인딩 과정에서 발생한 에러를 처리하기 위해 사용됩니다.
스프링은 데이터 바인딩 과정에서 발생한 에러를 BindingResult 객체에 담아서 컨트롤러 메서드로 전달합니다.
이렇게 전달된 BindingResult 객체를 이용하여 컨트롤러에서 발생한 에러를 처리할 수 있습니다.
BindingResult 객체는 hasErrors() 와 같은 메서드를 제공하여 에러 여부를 확인할 수 있습니다.
또한 getFieldErrors() 와 같은 메서드를 이용하여 필드별 에러 정보를 확인할 수 있습니다. 이렇게 확인된 에러 정보를
이용하여 컨트롤러에서 적절한 에러 처리를 수행할 수 있습니다.
@PostMapping("/user")
public String createUser(@Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
// 에러 처리 로직 작성
return "user-form";
} else {
userService.createUser(user);
return "redirect:/users";
}
}
위 코드에서는 @Valid 어노테이션과 함께 User 객체를 전달받은 뒤, BindingResult 객체를 인자로 받습니다.
이렇게 받은 BindingResult 객체를 이용하여 에러 여부를 확인한 뒤, 적절한 에러 처리 로직을 수행합니다.
추가) 바인딩을 할 때는 보안에 대한 고려가 필요합니다. 스프링은 CSRF(Cross-Site Request Forgery) 공격 방지를 위해 ‘csrf()’ 와 같은 메서드도 제공합니다.
- 출처 : 점프 투 스프링부트, ChatGPT