Spring Boot - 데이터 바인딩

진경천·2024년 10월 29일

데이터 바인딩이란

클라이언트 요청 데이터를 자바 객체로 변환하는 과정
프로퍼티 값을 타겟 객체에 설정해주는 것
ex) 사용자의 문자열 입력값을 어플리케이션 도메인 객체의 프로퍼티값으로 동적으로 할당해주는 것

데이터 바인딩의 흐름

  1. 클라이언트 요청
    사용자 입력 데이터가 포함된 요청 발생
  2. 바인딩
    Spring이 요청 데이터를 DTO/Model 객체에 자동 매핑
  3. 비즈니스 로직 처리
    매핑된 객체로 비즈니스 로직 수행
  4. 응답
    처리 결과를 클라이언트에 반환

요청 데이터의 바인딩

@ModelAttribute

클라이언트가 전송하는 form 형태의 HTTP Body와 요청 파라미터들을 생성자나 Setter로 바인딩하기 위해 사용

<input> 태그의 name속성이 파라미터의 모델 객체의 필드명과 같다면 자동으로 바인딩 해준다.

@RequestParam

1개의 HTTP 요청 파라미터를 받기 위해서 사용

@ReqeustBody

XML, Json 형태의 HTTP Body를 통째로 Java 객체로 변환

기상청 날씨 정보, 지도 등의 OPEN API 데이터를 주고 받을 때 주로 사용한다.

응답 데이터의 바인딩

@RequestBody

@RequestBody가 선언된 메소드의 반환값은 HTTP body 형태로 바인딩 되어 반환한다는 것을 나타낸다.

사용자 정의 바인딩

@InitBinder 어노테이션을 통해 사용자가 정의한 Custom editor, Validator 등을 추가할 수 있다.

@InitBinder
public void initBinder(WebDataBinder binder){
	binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}

자세한 메소드는 아래 참고
DataBinder API-DOC

유효성 검사

  • 사용자로부터 입력받은 데이터가 정의된 기준에 부합하는 지 확인하는 과정
  • 잘못된 데이터로 인한 오류 및 보안 문제를 예방

데이터 검증

  • 필수 데이터의 존재 유무
  • 데이터의 범위 (숫자 범위, 문자열 길이 등)
  • 전화번호, email 등 데이터가 특정 형식에 맞춰졌는지

비즈니스 검증

  • 서비스 정책에 따라 데이터 검증
  • 경우에 따라 외부 API 호출, DB데이터 조회

클라이언트측 유효성 검사

서버측 유효성 검사

Spring Validation

  • Spring에서 제공하는 데이터 검증 기능
  • Spring MVC와 통합되어 사용

Validator interface를 받아 유효성 검사 코드를 구현하여 유효성 검사를 수행한다.
주요 메소드

  • validate(Object target, Errors errors)
    유효성 검사를 수행하며 오류가 있을 경우 Errors 객체에 추가
  • Supports(Class<?> clazz)
    주어진 클래스를 검사할 수 있는지 여부를 boolean형으로 반환

Bena Validation

  • Java 표준으로 정의된 유효성 검사 API
  • 객체의 필드에 대한 유효성 검사를 정의하는 어노테이션을 제공

어노테이션 정보는 아래 참고
https://jakarta.ee/specifications/bean-validation/3.0/apidocs/

profile
어중이떠중이

0개의 댓글