java bean validation 사용하기

junto·2024년 2월 24일
0

spring

목록 보기
7/30
post-thumbnail

Java Bean Validation(JSR 380)

  • 객체 유효성을 어노테이션으로 손쉽게 적용할 수 있는 API를 제공한다.
  • DTO(Data Transfer Object)는 순수하게 데이터 전송을 위해 객체이지만 요청 데이터의 유효성을 검증하는 것이 더 중요하므로 DTO도 검증 대상이 된다.

의존성

- implementation("org.springframework.boot:spring-boot-starter-validation")

@Valid

  • @Valid 어노테이션을 붙이면 유효성 검사 기능을 활성화한다.
  • 클래스의 필드, 메서드의 매개변수, 메서드의 반환 값에 붙일 수 있다.
  • 주로 컨트롤러에서 요청 데이터 유효성 검증한다.
@PostMapping("v1/spaces/{spaceId}/reservations")
public ResponseEntity<SpaceReservation> reserve(@Valid @PathVariable Long spaceId, @RequestBody RequestCreateReservation req) {
    SpaceReservation reservation = reservationService.reserve(req.userId(), spaceId, req.reservationDate(), req.startTime(), req.endTime());

    return new ResponseEntity<>(reservation, HttpStatus.CREATED);
}
public record RequestUpdateReservation(
        @NotNull(message = "userId cannot be null.")
        Long userId,
        @NotNull(message = "spaceId cannot be null.")
        Long spaceId,
        @NotNull(message = "reservationDate cannot be null.")
        @Future
        LocalDate reservationDate,
        @NotNull(message = "startTime cannot be null.")
        LocalTime startTime,
        @NotNull(message = "endTime cannot be null.")
        LocalTime endTime,
        @NotNull(message = "isReserved cannot be null.")
        Boolean isReserved) {
}

주요 기능

  • @NotNull
    - 필드가 null이 아니어야 함.
  • @NotEmpty
    - 문자열, 컬렉션, 맵, 배열이 null이 아니어야 하고, 비어 있지 않아야 함.
  • @NotBlank
    - 문자열이 null이 아니고, 공백이 아니고, 공백 문자만을 포함하지 않아야 함.
  • @Size(min=, max=)
    - 문자열, 컬렉션, 배열의 크기가 지정된 범위 내에 있어야 함.
  • @Min(value)
    - 숫자 값이 지정된 최소값 이상.
  • @Max(value)
    - 숫자 값이 지정된 최대값 이하.
  • @Email
    - 문자열이 이메일 형식.
  • @Positive
    - 숫자 값이 양수.
  • @PositiveOrZero
    - 숫자 값이 양수거나 0.
  • @Negative
    - 숫자 값이 음수.
  • @NegativeOrZero
    - 숫자 값이 음수거나 0.
  • @Past
    - 날짜나 시간 값이 과거.
  • @PastOrPresent
    - 날짜나 시간 값이 과거 또는 현재.
  • @Future
    - 날짜나 시간 값이 미래.
  • @FutureOrPresent
    - 날짜나 시간 값이 미래 또는 현재.
  • @Pattern(regexp = "{정규표현식}")
  • 더 많은 기능을 제공하며 아래 링크에서 찾아볼 수 있다.
    https://jakarta.ee/specifications/bean-validation/3.0/apidocs/

profile
꾸준하게

0개의 댓글