+) 22. 08. 04. μ 리 λ° μΆκ°!
μΉμ 5. κ²μ¦2 - Bean Validation μκ° μλ£!!
Bean Validationμ μ νμ©νλ©΄ μ λ
Έν
μ΄μ
νλλ‘ κ²μ¦ λ‘μ§μ λ§€μ° νΈλ¦¬νκ² μ μ©ν μ μλ€.
Bean Validationμ΄λ νΉμ ν ꡬνμ²΄κ° μλλΌ Bean Validation 2.0(JSR-380)μ΄λΌλ κΈ°μ νμ€μ΄λ€. λ€μ λ§ν΄, κ²μ¦ μ λ
Έν
μ΄μ
κ³Ό μ¬λ¬ μΈν°νμ΄μ€μ λͺ¨μμ΄λ€.
κ²μ¦ μ λ Έν μ΄μ
@NotBlank
: λΉκ° + κ³΅λ°±λ§ μλ κ²½μ°λ₯Ό νμ©νμ§ μλλ€.@NotNull
: nullμ νμ©νμ§ μλλ€.@Range(min, max)
: λ²μ μμ κ°μ΄μ΄μΌ νλ€.@Max()
: μ΅λ ()κΉμ§λ§ νμ©νλ€.@Validated
λ μ€νλ§ μ μ© κ²μ¦ μ λ
Έν
μ΄μ
μ΄κ³ , @Valid
λ μλ° νμ€ κ²μ¦ μ λ
Έν
μ΄μ
μ΄λ€. @Validated
λ λ΄λΆμ groupsλΌλ κΈ°λ₯μ ν¬ν¨νκ³ μλ€.
κ²μ¦ μμ
@ModelAttribute
κ° νλμ νμ
λ³ν μλ보ν΅μ groupsλ₯Ό μ¬μ©ν기보λ€, νΌμ μ λ¬ λ°λ μ μ© κ°μ²΄λ₯Ό λ§λ€μ΄μ @ModelAttribute
λ‘ μ¬μ©νλ€. μ΄κ²μ ν΅ν΄ 컨νΈλ‘€λ¬μμ νΌ λ°μ΄ν°λ₯Ό μ λ¬ λ°κ³ , μ΄ν 컨νΈλ‘€λ¬μμ νμν λ°μ΄ν°λ₯Ό μ¬μ©ν΄μ Itemμ μμ±νλ€.
νΌ λ°μ΄ν° μ λ¬μ μν λ³λμ κ°μ²΄λ₯Ό μ¬μ©νκ³ , λ±λ‘, μμ μ© νΌ κ°μ²΄λ₯Ό λλλ©΄ λ±λ‘κ³Ό μμ μ΄ μμ ν λΆλ¦¬λκΈ° λλ¬Έμ groupsλ₯Ό μ μ©ν μΌμ λλ¬Όλ€.
@Valid
, @Validated
λ HttpMessageConverter(@RequestBody)μλ μ μ©ν μ μλ€.
@RequestBody
λ HTTP Bodyμ λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ λ³νν λ μ¬μ©νλ€. (μ£Όλ‘ API JSON μμ²μ λ€λ£° λ μ¬μ©νλ€.)
@ModelAttribute
λ νλ λ¨μλ‘ μ κ΅νκ² λ°μΈλ©μ΄ μ μ©λλ€. νΉμ νλκ° λ°μΈλ© λμ§ μμλ λλ¨Έμ§ νλλ μ μμΌλ‘ λ°μΈλ© λκ³ , Validatorλ₯Ό μ¬μ©ν κ²μ¦λ μ μ©ν μ μλ€.
@RequestBody
λ HttpMessageConverter λ¨κ³μμ JSON λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ λ³κ²½νμ§ λͺ»νλ©΄ μ΄ν λ¨κ³ μμ²΄κ° μ§νλμ§ μκ³ μμΈκ° λ°μνλ€. 컨νΈλ‘€λ¬λ νΈμΆλμ§ μκ³ , Validatorλ μ μ©ν μ μλ€.
μμ λνκΈ°
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for(int i = 0; i < signs.length; i++) {
if(signs[i] == false) {
absolutes[i] = -absolutes[i];
}
answer += absolutes[i];
}
return answer;
}
}
μ°Έκ³ λ‘ μ μλ 1μ λ°μ... μμ£ ... else μ μ¨μ...? μΌνμ°μ°μ μ μ¨μ...? λͺ°λΌ... κ·ΈμΉλ§ λ λ΄ μ½λ κ°κ²°νκ³ μμ보기 μ½λ€ μκ°ν¨... μ... π