Spring Binding(바인딩)

Seomoon·2023년 4월 5일
0

Spring Framework 의 바인딩(Binding)

바인딩(Binding)은 사용자 입력 값을 객체의 필드에 매핑하는 과정을 의미합니다.
일반적으로 HTML 폼 등에서 사용자가 입력한 데이터를 처리할 때 자주 사용됩니다.

스프링 프레임워크에서는 다양한 방식으로 바인딩을 지원합니다.

  1. @RequestParam 어노테이션 : 가장 기본적인 방식으로, HTTP 요청 파라미터를 객체의 필드에 매핑하는 것입니다.
    이 어노테이션을 사용하면 HTTP 요청 파라미터를 메서드의 인자로 전달받을 수 있습니다.
  2. @RequestBody 어노테이션 : HTTP 요청 바디를 객체에 매핑하는 기능을 제공하는 어노테이션으로, 이 어노테이션을
    사용하면 HTTP 요청 바디를 객체로 변환하여 메서드의 인자로 전달받을 수 있습니다.
  3. th:field 타임리프 속성 : 스프링은 또한 타임리프와 같은 뷰 템플릿에서 객체를 바인딩 하는 기능도 제공합니다.
    이를 이용하면 HTML 폼에서 입력한 값들을 자동으로 객체에 바인딩 할 수 있습니다.

BindingResult

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
profile
◑﹏◐

0개의 댓글