Java Framework/Spring

[Spring] 바인딩 (Binding)

annovation 2025. 2. 9. 10:10

바인딩 (Binding)

Spring Binding 클라이언트 요청 데이터와 서버의 Java 객체 간의 자동 매핑을 제공하는 Spring MVC의 핵심 기능 중 하나입니다.
HTML 폼에서 입력한 데이터를 Java 객체로 변환하거나, 반대로 Java 객체의 데이터를 HTML 폼에 표시할 때 사용됩니다.
이를 통해 개발자는 데이터를 수작업으로 변환하는 번거로움을 줄이고, 간결하고 가독성 높은 코드를 작성할 수 있습니다.

예를 들어, 사용자가 웹 페이지에서 폼을 작성해 제출하면, 서버는 이 데이터를 Java 객체로 변환하여 처리하게 됩니다. Spring Binding은 이 과정을 자동화합니다.


동작 원리

Spring Binding은 다음과 같은 과정을 통해 데이터를 Java 객체와 연결합니다.

  1. 클라이언트 요청 수신
    • 사용자가 HTML 폼에서 입력한 데이터가 서버로 전송됩니다.
    • ex. username=AnnKim&email=ann.kim@example.com
  2. 데이터 매핑
    • 요청 데이터의 (name 속성)가 Java 객체의 필드 이름과 일치하면 해당 필드에 값이 자동으로 설정됩니다.
  3. 유효성 검증
    • 데이터 매핑 과정에서 Spring Validator 또는 Hibernate Validator를 통해 입력값이 유효한지 검사합니다.
  4. 객체 전달
    • 컨트롤러 메서드에 매핑된 객체로 데이터가 전달되며, 개발자는 이를 활용하여 필요한 작업(저장, 처리 등)을 수행합니다.

예시

컨트롤러는 Spring Binding의 중심 역할을 합니다.
@Valid BindingResult를 사용하여 유효성 검증과 에러 처리를 수행합니다.

 

ex. 컨트롤러

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;

import jakarta.validation.Valid;

@Controller
public class UserController {

    @PostMapping("/user/register")
    public String registerUser(@Valid User user, BindingResult bindingResult, Model model) {
        if (bindingResult.hasErrors()) {
            model.addAttribute("errors", bindingResult.getAllErrors());
            return "user_form"; // 유효성 검증 실패 시 다시 폼 렌더링
        }

        // 유효성 검증 성공 시 처리 로직
        System.out.println("Username: " + user.getUsername());
        System.out.println("Email: " + user.getEmail());
        return "redirect:/user/success";
    }
}

 

  • @Valid 어노테이션은 이 객체에 대해 유효성 검증(Validation)을 수행하도록 지시합니다.
  • BindingResult : @Valid 어노테이션과 함께 사용되며, 유효성 검증 결과를 저장합니다. 에러가 발생했는지 확인할 수 있습니다.

 

'Java Framework > Spring' 카테고리의 다른 글

[Spring] Bean  (1) 2025.02.12
[Spring] 페이징 (Paiging) 주요 메서드  (0) 2025.02.10
[Spring] Validation Library 데이터 유효성 검사  (0) 2025.02.08
[Spring] HTTP Method  (0) 2025.02.07
[Spring] @Autowired  (1) 2025.02.02