[Spring, JAVA] ValidationWeb_Backend2023. 6. 20. 17:20
Table of Contents
Validation์ด๋?
๐ [์ฌ์ ] ์ ํจ์ฑ ๊ฒ์ฆ, ์ฃผ๋ก ์ฌ์ฉ์ ๋๋ ์๋ฒ์ ์์ฒญ ๋ด์ฉ์์ ์๋ชป๋ ๋ด์ฉ์ด ์๋์ง ํ์ธํ๋ ๋จ๊ณ
Validation์ ์ข ๋ฅ
- ๋ฐ์ดํฐ ๊ฒ์ฆ
- ํ์ ๋ฐ์ดํฐ์ ์กด์ฌ ์ ๋ฌด
- ๋ฌธ์์ด ๊ธธ์ด๋ ์ซ์ํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๊ฐ์ ๋ฒ์
- email, ์ ์ฉ์นด๋ ๋ฒํธ ๋ฑ ํน์ ํ์์ ๋ง์ถ ๋ฐ์ดํฐ
- ๋น์ฆ๋์ค ๊ฒ์ฆ
- ์์ง์ค์ ์ ์ฑ
์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ์ฌ ๊ฒ์ฆ
- ๋ฐฐ๋ฌ์ฑ์ ๊ฒฝ์ฐ ๋ฐฐ๋ฌ ์์ฒญ ์, ํด๋น ์ฃผ๋ฌธ ๊ฑด์ด ๊ฒฐ์ ์๋ฃ ์ํ์ธ์ง ํ์ธ ๋ฑ
- ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ธ๋ถ API๋ฅผ ํธ์ถํ๊ฑฐ๋ DB์ ๋ฐ์ดํฐ๊น์ง ์กฐํํ์ฌ ๊ฒ์ฆํ๋ ๊ฒฝ์ฐ๋ ์กด์ฌํจ
- ์์ง์ค์ ์ ์ฑ
์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ์ฌ ๊ฒ์ฆ
Speing core Tech - Validation๋?
๐ Spring ์์๋ WEB layer์ ์ข ์์ ์ด์ง ์์ Vaildation์ ํ๊ณ ์ ๋ ธ๋ ฅ
Spring์ Vaildation( ๋ ๋ค ๋ฐ์ดํฐ ๊ฒ์ฆ์ ๊ฐ๊น์)
- Java Bean Vaildation
- dto์ ์ด๋ ธํ ์ด์ ์ผ๋ก ๋ช ์ ํ
public class MemberCreationRequest { @NotBlank(message="์ด๋ฆ์ ์ ๋ ฅํด์ฃผ์ธ์.") @Size(max=64, message="์ด๋ฆ์ ์ต๋ ๊ธธ์ด๋ 64์ ์ ๋๋ค.") private String name; @Min(0, "๋์ด๋ 0๋ณด๋ค ์ปค์ผ ํฉ๋๋ค.") private int age; @Email("์ด๋ฉ์ผ ํ์์ด ์๋ชป๋์์ต๋๋ค.") private int email; // the usual getters and setters... }
- @Valid ์ด๋ ธํ ์ด์ ์ ํด๋น @RequestBody์ ๋ฌ๊ฒ ๋๋ฉด, Java Bean Validation์ ์ํํ ํ ๋ฌธ์ ๊ฐ ์์ ๋๋ง ๋ฉ์๋ ๋ด๋ถ๋ก ์ง์
@PostMapping(value = "/member") public MemeberCreationResponse createMember( @Valid @RequestBody final MemeberCreationRequest memeberCreationRequest) { // member creation logics here... }
- ๊ฒ์ฆ ์ค ์คํจ ์ : MethodArgumentNotValidException ๋ฐ์
- JavaBean ๋ด์ ์ด๋ ธํ ์ด์ ์ผ๋ก ๊ฒ์ฆ๋ฐฉ๋ฒ ๋ช ์ํ๋ ๋ฐฉ๋ฒ
- Spring validator ์ธํฐํ์ด์ค ๊ตฌํ์ ํตํ validation
- ์๋์ Person ๊ฐ์ฒด์ ๋ํ์ฌ
public class Person { private String name; private int age; // the usual getters and setters... }
- validator ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ PersonVaildator ํด๋์ค๋ฅผ ํตํด validation
- supports : ์ด vaildation์ด ๋์ํ ์กฐ๊ฑด ์ ์
- ์ฃผ๋ก, class ์ Type์ ๋น๊ต
- validate : ์ํ๋ ๊ฒ์ฆ ์ํ
- supports : ์ด vaildation์ด ๋์ํ ์กฐ๊ฑด ์ ์
Validation์ ์ฃผ์์ฌํญ๊ณผ ๊ด๋ จ ์ค๋ฌด ํ์ฉ ํจํด
- validation์ด ๋๋ฌด ์ฌ๋ฌ ๊ตฐ๋ฐ์ ํฉ์ด์ ธ์์ผ๋ฉด ํ
์คํธ ๋ฐ ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง
- ๋จ์
- ์ค๋ณต๋ ๊ฒ์ฆ : ์ ์ฑ ๋ณ๊ฒฝ ์์ ๋ชจ๋ ์ค๋ณต ์ฝ๋๋ฅผ ์์ ํด์ผ ํจ
- ๋ค๋ฅธ ๊ฒ์ฆ : ์ฌ๋ฌ ๊ตฐ๋ฐ์ ๋ค๋ฅธ ์ ์ฑ ์ ๋ฐ๋ฅด๋ ๊ฒ์ฆ์ด ์ํ๋ ์ ์์
- ์ฆ, validation์ ๊ฐ๋ฅํ ๋ก์ง ์ด๊ธฐ์ ์ํ ์ ์คํจ ์์๋ exception์ ๋์ง๋ ํธ์ด ์ฒ๋ฆฌ๊ฐ ํธํจ
- ์ค๋ฌด ํจํด :
- 1์ฐจ ๊ฒ์ฆ : ์์ฒญ dto์์ Java Bean alidation์ผ๋ก ๋จ์ ๋ฐ์ดํฐ(์ ๋ฌด, ๋ฒ์, ํ์) ๊ฒ์ฆ
- 2์ฐจ ๊ฒ์ฆ : ๋ก์ง ์ด๊ธฐ์ ๋น์ฆ๋์ค ๊ฒ์ฆ ์ํ ํ ์คํจ์ Custom Exception(ErrorCode, ErrorMessage๋ฅผ ์ ๋ ฅ)ํด์ ์์ธ๋ฅผ ๋์ง๋๋ก ํ๊ณ ์์ธ์ฒ๋ฆฌํ์ฌ ์๋ต ์์ฑ
- ๋จ์
- Spring Validator์ ์ฅ๋จ์
- ์ฅ์ : Java Bean Validation์ ๋นํด ์กฐ๊ธ ๋ ๋ณต์กํ ๊ฒ์ฆ ๊ฐ๋ฅ
- ๋จ์ :
- Validation์ ์ํํ๋ ์ฝ๋๋ฅผ ์ฐพ๊ธฐ ์ด๋ ค์
- ์์ ํ ๋ฐ์ดํฐ๋ง ๊ฒ์ฆ์ ํ๋๊ฒ ์๋, ๋น์ฆ๋์ค ๊ฒ์ฆ์ด ์์ด๋ ์ ์์
- ์ด ๊ฒฝ์ฐ ๋น์ฆ๋์ค ๊ฒ์ฆ ๋ก์ง ๋ํ ํฉ์ด์ ธ ์๋ชป๋ ๊ฒ์ฆ์ ํ๋ฅ ์ด ๋์์ง
'Web_Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์๋ฐ String ๊ฐ ๋น๊ต(==์ฐ์ฐ์์ equals( )) (2) | 2022.03.23 |
---|
@Yanako :: Yana's coding story
์ผ๋์ ์ฝ๋ฉ ์ผ๊ธฐ์ฅ :) #์ฝ๋ฉ๋ธ๋ก๊ทธ #๊ธฐ์ ๋ธ๋ก๊ทธ #์ฝ๋ฉ #์กฐ๊ธ์ฉ,๊พธ์คํ
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!