๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL

02/14(์ˆ˜) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 36์ผ์ฐจ TIL - Validation

by ๊ฐ์ž๊ฐœ๋ฐœ๊พผ 2024. 2. 14.

 

๐Ÿ“–  ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

  • Validation

 

๐Ÿฅ”  Validation ์ด๋ž€?

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
ํŠนํžˆ, Java ๋Š” null ๊ฐ’์— ๋Œ€ํ•œ ์ ‘๊ทผ์— ๋Œ€ํ•ด NullPointrException ์˜ค๋ฅ˜๊ฐ€ ๋ฐœํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„
์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด Validation (๊ฒ€์ฆ ๊ณผ์ •) ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Spring ์—์„œ๋Š” null ํ™•์ธ๋ฟ ์•„๋‹ˆ๋ผ ๋ฌธ์ž์˜ ๊ธธ์ด ์ธก์ •๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฒ€์ฆ ๊ณผ์ •๋„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก
Bean Validation ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿฅ”  Bean Validation

๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์—๋„ˆํ…Œ์ด์…˜์„ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.

 

- @NotNull : null ๋ถˆ๊ฐ€

- @NotEmpty : null, "" ๋ถˆ๊ฐ€

- @NotBlank : null, "", " " ๋ถˆ๊ฐ€

- @Size : ๋ฌธ์ž ๊ธธ์ด ์ธก์ •

- @Max : ์ตœ๋Œ“๊ฐ’

- @Min : ์ตœ์†Ÿ๊ฐ’

- @Positive : ์–‘์ˆ˜

- @Negative : ์Œ์ˆ˜

- @Email : E-mail ํ˜•์‹

- @Pattern : ์ •๊ทœ ํ‘œํ˜„์‹

 

โ—๏ธ build.gradle

implementation 'org.springframework.boot:spring-boot-starter-validation'

 

Validation ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” build.gradle ์— dependencies ๋ถ€๋ถ„์— ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค.

 

๐Ÿฅ”  Bean Validation ์ ์šฉ ์˜ˆ์‹œ

package com.sparta.springauth.dto;

import jakarta.validation.constraints.*;
import lombok.Getter;

@Getter
public class ProductRequestDto {
    @NotBlank
    private String name;
    @Email
    private String email;
    @Positive(message = "์–‘์ˆ˜๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.")
    private int price;
    @Negative(message = "์Œ์ˆ˜๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.")
    private int discount;
    @Size(min=2, max=10)
    private String link;
    @Max(10)
    private int max;
    @Min(2)
    private int min;
}

 

 

๐Ÿ“š  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

์—ฐํœด๋„ ๋๋‚ฌ์œผ๋‹ˆ๊นŒ ๋‹ค์‹œ ์—ด์‹ฌํžˆ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ์Šต๊ด€์„ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•˜์ž!