day49 πŸŒ•

μž₯λ―ΈΒ·2022λ…„ 8μ›” 1일
0

였늘의 μ„±κ³Ό

λͺ©λ‘ 보기
49/129

μŠ€ν”„λ§ MVC 2편 - λ°±μ—”λ“œ μ›Ή 개발 ν™œμš© 기술 μ„Ήμ…˜ 5 μˆ˜κ°•

+) 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λΌλŠ” κΈ°λŠ₯을 ν¬ν•¨ν•˜κ³  μžˆλ‹€.

검증 μˆœμ„œ

  1. @ModelAttribute 각 ν•„λ“œμ— νƒ€μž… λ³€ν™˜ μ‹œλ„
    • μ„±κ³΅ν•˜λ©΄ λ‹€μŒμœΌλ‘œ
    • μ‹€νŒ¨ν•˜λ©΄ typeMismatch둜 FieldError μΆ”κ°€
  2. Validator 적용

보톡은 groupsλ₯Ό μ‚¬μš©ν•˜κΈ°λ³΄λ‹€, 폼을 전달 λ°›λŠ” μ „μš© 객체λ₯Ό λ§Œλ“€μ–΄μ„œ @ModelAttribute둜 μ‚¬μš©ν•œλ‹€. 이것을 톡해 μ»¨νŠΈλ‘€λŸ¬μ—μ„œ 폼 데이터λ₯Ό 전달 λ°›κ³ , 이후 μ»¨νŠΈλ‘€λŸ¬μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό μ‚¬μš©ν•΄μ„œ Item을 μƒμ„±ν•œλ‹€.
폼 데이터 전달을 μœ„ν•œ λ³„λ„μ˜ 객체λ₯Ό μ‚¬μš©ν•˜κ³ , 등둝, μˆ˜μ •μš© 폼 객체λ₯Ό λ‚˜λˆ„λ©΄ 등둝과 μˆ˜μ •μ΄ μ™„μ „νžˆ λΆ„λ¦¬λ˜κΈ° λ•Œλ¬Έμ— groupsλ₯Ό μ μš©ν•  일은 λ“œλ¬Όλ‹€.

@Valid, @ValidatedλŠ” HttpMessageConverter(@RequestBody)에도 μ μš©ν•  수 μžˆλ‹€.
@RequestBodyλŠ” HTTP Body의 데이터λ₯Ό 객체둜 λ³€ν™˜ν•  λ•Œ μ‚¬μš©ν•œλ‹€. (주둜 API JSON μš”μ²­μ„ λ‹€λ£° λ•Œ μ‚¬μš©ν•œλ‹€.)

@ModelAttributeλŠ” ν•„λ“œ λ‹¨μœ„λ‘œ μ •κ΅ν•˜κ²Œ 바인딩이 μ μš©λœλ‹€. νŠΉμ • ν•„λ“œκ°€ 바인딩 λ˜μ§€ μ•Šμ•„λ„ λ‚˜λ¨Έμ§€ ν•„λ“œλŠ” μ •μƒμœΌλ‘œ 바인딩 되고, Validatorλ₯Ό μ‚¬μš©ν•œ 검증도 μ μš©ν•  수 μžˆλ‹€.
@RequestBodyλŠ” HttpMessageConverter λ‹¨κ³„μ—μ„œ JSON 데이터λ₯Ό 객체둜 λ³€κ²½ν•˜μ§€ λͺ»ν•˜λ©΄ 이후 단계 μžμ²΄κ°€ μ§„ν–‰λ˜μ§€ μ•Šκ³  μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€. μ»¨νŠΈλ‘€λŸ¬λ„ ν˜ΈμΆœλ˜μ§€ μ•Šκ³ , Validator도 μ μš©ν•  수 μ—†λ‹€.


베이슀볼 μˆ˜μ • μ΄μ–΄μ„œ


ν† ν”½ 1개


μ½”ν…Œ 1문제

μŒμ–‘ λ”ν•˜κΈ°

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 μ•ˆ μ¨μ„œ...? μ‚Όν•­μ—°μ‚°μž μ•ˆ μ¨μ„œ...? λͺ°λΌ... 그치만 λ‚œ λ‚΄ μ½”λ“œ κ°„κ²°ν•˜κ³  μ•Œμ•„λ³΄κΈ° 쉽닀 생각함... 응... 😞

profile
김뉴비

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보