[SpringBoot] @NotNull, @NotEmpty, @NotBlank ์ฐจ์ด์ , ๊ทธ๋งŒ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ๋กœ ํ•ด์š”

2023. 1. 28. 20:16ใ†Backend/๐ŸŒฟ Spring

@NotNull, @NotEmpty, @NotBlank ์„ธ ์–ด๋…ธํ…Œ์ด์…˜์€ DTO ํ•„๋“œ์˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์— ์‚ฌ์šฉ๋œ๋‹ค. 

 

@NotNull

@NotNull์€ ํ•„๋“œ์— Null ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ๋กœ๋„ @NotNull ์ด ๋ถ™์€ ํ•„๋“œ๋Š” null ๊ฐ’๋งŒ ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ๋ฟ, "" ๋‚˜ "  " ๊ฐ™์€ ๋นˆ๊ฐ’, ๊ณต๋ฐฑ๊ฐ’์€ ํ• ๋‹น ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

ํ•˜์ง€๋งŒ @NotEmpty ์™€ @NotBlank ๋Š” ์™ ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋งค๋ฒˆ ํ—ท๊ฐˆ๋ฆฐ๋‹ค.

๋‘˜์˜ ์ฐจ์ด๊ฐ€ ํ—ท๊ฐˆ๋ฆผ -> ๊ตฌ๊ธ€๋ง -> ์˜ค์ผ€์ด ํ™•์ธ -> (๋ฉฐ์น  ํ›„) ๋‘˜์˜ ์ฐจ์ด๊ฐ€ ํ—ท๊ฐˆ๋ฆผ -> ๊ตฌ๊ธ€๋ง -> ...

์ด์   ๊ทธ๋งŒ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ๋กœ ํ•˜์ž.

 

 

@NotEmpty

Not Empty : (ํ•„๋“œ๊ฐ€) ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค <-> ๊ทธ๋ ‡๋‹ค๋ฉด ๋น„์–ด์žˆ๋Š” ํ•„๋“œ๋Š” ์–ด๋–ค ์ƒํƒœ์ผ๊นŒ. ๋ฐ”๋กœ null ๊ณผ "" ์ด๋‹ค.

์ฆ‰ @NotEmpty๋Š” ํ•„๋“œ์— null ๊ณผ "" ๊ฐ™์€ ๊ฐ’์ด ํ• ๋‹น๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

@Getter
public class SampleDto {

    @NotEmpty
    private String phone;

}

์ด์ œ phone ํ•„๋“œ์— null ํ˜น์€ "" ๋ฅผ ์ž…๋ ฅํ›„ API ๋ฅผ ๋ณด๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์œ ํšจ์„ฑ ๊ฒ€์ฆ์ด ์ž˜ ์ด๋ค„์กŒ๋‹ค๋Š” ์˜๋ฏธ.

{
    "timestamp": "28-01-2023 07:50:16",
    "errorCode": "BAD_REQUEST",
    "errorMessage": "๊ณต๋ฐฑ์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"
}

์œ ํšจ์„ฑ ๊ฒ€์ฆ์ด ์ž˜ ์ด๋ค„์กŒ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

ํ•˜์ง€๋งŒ ํ•ด๋‹น ํ•„๋“œ์— " ",  "     " ์ฒ˜๋Ÿผ ๋„์–ด์“ฐ๊ธฐ๊ฐ€ ์žˆ์–ด๋„ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ค„์งˆ๊นŒ?

์•„์‰ฝ์ง€๋งŒ ๊ณต๋ฐฑ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ฐ’์€ @NotEmpty ๋กœ ๊ฒ€์ฆ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.  

 

"   " ์€ ๊ณต๋ฐฑ์ด๊ธด ํ•˜์ง€๋งŒ ๋น„์–ด์žˆ๋Š” ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋ญ๋ผ๋„ ์žˆ๋Š” ์ƒํƒœ, ๋น„๋ก ๊ทธ๊ฒƒ์ด ๊ณต๋ฐฑ์ผ์ง€๋ผ๋„ ๋ง์ด๋‹ค.

๋•Œ๋ฌธ์— ํ•„๋“œ์— "   " ์ฒ˜๋Ÿผ ๊ณต๋ฐฑ์ด ํ• ๋‹น๋˜๋ฉด @NotEmpty๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์—†๋‹ค. ์‹ค์ œ๋กœ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ์ž ํœด๋Œ€ํฐ ๋ฒˆํ˜ธ ํ•„๋“œ๊ฐ€ @NotEmpty ๋กœ ๋ผ ์žˆ์–ด ์ŠคํŽ˜์ด์Šค๋งŒ ์ž…๋ ฅ๋œ ๊ฐ’์ด ์ €์žฅ๋œ ์ผ€์ด์Šค๋„ ์žˆ์—ˆ๋‹ค...

 

๊ทธ๋ ‡๋‹ค๋ฉด "  " ์ฒ˜๋Ÿผ ์ŠคํŽ˜์ด์Šค๋กœ๋งŒ ๊ฐ€๋“ํ•œ ๊ฐ’์€ ์–ด๋–ป๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ํ•ด์•ผํ• ๊นŒ?

์ด์ œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๋ํŒ์™•์ธ @NotBlank๋ฅผ ์†Œ๊ฐœํ•  ์ฐจ๋ก€๋‹ค.

 

@NotBlank

@NotBlank ๋Š”

  • null
  • ""
  • " "
  • "      "  

์ค‘ ์–ด๋Š๊ฒƒ๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํšŒ์›๊ฐ€์ž…ํ•  ๋•Œ ์ •๋ณด ๊ธฐ์ž…์ด ๊ท€์ฐฎ์•„ ์ŠคํŽ˜์ด์Šค๋กœ๋งŒ ์ž…๋ ฅ์ฐฝ์„ ์ฑ„์šธ ๋•Œ,

ํ•„๋“œ์˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ @NotBlank๋กœ ํ•œ๋‹ค๋ฉด ๋ณด๊ธฐ์ข‹๊ฒŒ ํŠ•๊ธธ ๊ฒƒ์ด๋‹ค.  

 

๊ฒฐ๋ก 

@NotNull : null

@NotEmpty : null, ""

@NotBlank : null, "", " ", "     "

 

์„ธ๊ฐ€์ง€ Validator ์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ดค๋‹ค. ์ž์นซ ์˜คํ•ดํ•˜๋ฉด ํ•ญ์ƒ @NotBlank ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ณต๋ฐฑ์ด๋‚˜ ๋นˆ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋ถ„๋ช… ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ฐ ์ƒํ™ฉ์— ๋งž๋Š” Validator ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ฒ ๋‹ค. 

 

 

 

 

๋