Intro


ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ„˜μ–΄μ˜¨ 데이터λ₯Ό 객체에 바인딩할 λ•Œ @Valid, @Validated μ–΄λ…Έν…Œμ΄μ…˜μ„ ν†΅ν•΄μ„œ μœ νš¨μ„± 검사λ₯Ό 진행할 수 μžˆλ‹€.

μœ νš¨μ„± 검사λ₯Ό μ μš©ν•  ν•„λ“œμ— μ—¬λŸ¬κ°€μ§€ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ μš©ν•  수 μžˆλŠ”λ° κ·Έ 쀑 λΉ„μŠ·ν•΄λ³΄μ΄λŠ” @NotNull, @NotEmpty, @NotBlank μ–΄λ…Έν…Œμ΄μ…˜μ„ κ΅¬λΆ„ν•΄λ³΄κ³ μž ν•œλ‹€.

μ΄μœ λŠ” ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ 적용 κ°€λŠ₯ν•œ νƒ€μž…μ΄ μ•„λ‹Œ 곳에 μ‚¬μš©ν•˜λ‹€ μ—λŸ¬λ₯Ό κ²ͺ은 상황이 μžˆκΈ°μ— μš©λ„μ— 맞게 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•¨μ΄λ‹€.


@NotNull


@NotNull은 Annotation Type NotNull 에 보면 말 κ·ΈλŒ€λ‘œ Null만 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  λ˜μ–΄μžˆλ‹€.

ν•˜μ§€λ§Œ λΉ„μ–΄μžˆλŠ” 것은 μƒκ΄€μ—†μœΌλ―€λ‘œ ""λ‚˜ " "λŠ” κ°€λŠ₯ν•˜λ‹€.

μžλ°”μ—μ„œ ""λŠ” 보톡 μ΄ˆκΈ°ν™”λœ String에 μ‚¬μš©ν•˜κ³ , " "λŠ” 곡백 문자λ₯Ό μ˜λ―Έν•œλ‹€.

λ”°λΌμ„œ, 곡백 λ¬Έμžμ™€ μ΄ˆκΈ°ν™”λ₯Ό ν¬ν•¨ν•œ μ–΄λ–€ 값이라도 μƒκ΄€μ—†μ§€λ§Œ, Null이 듀어왔을 λ•Œ λ¬Έμ œκ°€ μƒκΈ°λŠ” κ²½μš°μ— μ‚¬μš©ν•œλ‹€.

그리고, @NotNull은 λͺ¨λ“  νƒ€μž…μ— μ μš©ν•  수 μžˆλ‹€.


@NotEmpty


@NotEmptyλŠ” Annotation Type NotEmpty μ—μ„œ

The annotated element must not be null nor empty라고 λͺ…μ‹œλ˜μ–΄ μžˆλ‹€.

이 말은 ""의 빈 값은 λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” λœ»μ΄λ‹€.

ν•œκ°€μ§€ μΆ”κ°€μ μœΌλ‘œ, @NotEmptyλŠ” λͺ¨λ“  νƒ€μž…μ— λ‹€ μ μš©λ˜λŠ” 것이 μ•„λ‹ˆλ‹€.

CharSequence, Collection, Map, Array νƒ€μž…μ—λ§Œ μ μš©λœλ‹€.


@NotBlank


@NotBlankλŠ” Annotation Type NotBlank μ—μ„œ

Null이 μ•„λ‹ˆκ³ , μ΅œμ†Œ ν•œ 개 μ΄μƒμ˜ 곡백 λ¬Έμžκ°€ μ•„λ‹Œ 문자λ₯Ό 포함해야 ν•œλ‹€κ³  λ˜μ–΄μžˆλ‹€.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ— " "도 λΆˆκ°€λŠ₯ν•˜λ‹€.

@NotBlankλŠ” validation 쀑 강도가 κ°€μž₯ 높은 μˆ˜μ€€μ΄λ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, 🚨 제일 μ€‘μš”ν•œ 뢀뢄인데 @NotBlankλŠ” CharSequence νƒ€μž…μ—λ§Œ μ μš©ν•  수 μžˆλ‹€. κ·Έλ ‡κΈ° 떄문에, CharSequence의 κ΅¬ν˜„ 클래슀인 Stringμ—” μ μš©ν•  수 μžˆμ§€λ§Œ Integer, Long, Doubleκ³Ό 같은 νƒ€μž…μ—” μ μš©ν•  수 μ—†λ‹€. 🚨

그럴 땐, λͺ¨λ“  νƒ€μž…μ— μ μš©ν•  수 μžˆλŠ” @NotNull을 μ‚¬μš©ν•˜λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€.

References

Leave a comment