๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋‚˜์˜ ๋ชจ์–‘

042 | DTO ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๋ณธ๋ฌธ

SEB/TIL

042 | DTO ์œ ํšจ์„ฑ ๊ฒ€์ฆ

kexon 2022. 8. 23. 01:23

๐ŸŽˆDTO ์œ ํšจ์„ฑ ๊ฒ€์ฆ์ด ํ•„์š”ํ•œ ์ด์œ 

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ๊ฐ’์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ก ํŠธ์—”๋“œ ์ชฝ์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์„œ๋ฒ„ ์ชฝ์—์„œ ํ•œ๋ฒˆ ๋” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ํ”„๋ก ํŠธ์—”๋“œ ์ชฝ์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋Š” ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ์ธก๋ฉด์—์„œ ํ•„์š”ํ•œ ์ž‘์—…์ด๋‹ค.

๐ŸŽˆDTO ํด๋ž˜์Šค์— ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์ ์šฉํ•˜๊ธฐ

๐Ÿงฉ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•œ ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-validation:2.7.3'
}

๐ŸŽˆ@PathVariable ์œ ํšจ์„ฑ ๊ฒ€์ฆ

  • @PathVariable์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค์— @Validated์„ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค. ์•ˆ ๋ถ™์ด๋ฉด @Min(1)์ด ์†Œ์šฉ์ด ์—†๋‹ค

๐ŸŽˆJakarta Bean Validation

  • ์• ๋„ˆํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•œ ํ‘œ์ค€ ์ŠคํŽ™์ด๋‹ค.
  • Jakarta Bean Validation์˜ ์• ๋„ˆํ…Œ์ด์…˜์„ ์ด์šฉํ•˜๋ฉด Controller ๋กœ์ง์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Jakarta Bean Validation์—์„œ ๋นŒํŠธ์ธ(Built-in)์œผ๋กœ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์• ๋„ˆํ…Œ์ด์…˜์€ Custom Validator๋ฅผ ํ†ตํ•ด Custom Annotation์„ ๊ตฌํ˜„ํ•œ ํ›„, ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐ŸŽˆCustom Validator๋ฅผ ์‚ฌ์šฉํ•œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ

  • DTO ํด๋ž˜์Šค์— ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์ ์šฉ ์‹œ Jakarta Bean Validation์— ๋‚ด์žฅ๋œ(Built-in) ์• ๋„ˆํ…Œ์ด์…˜ ์ค‘ ์›ํ•˜๋Š” ์• ๋„ˆํ…Œ์ด์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ์›ํ•˜๋Š” ๋ชฉ์ ์— ๋งž๋Š” ์• ๋„ˆํ…Œ์ด์…˜์„ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Custom Validator ๊ตฌํ˜„ ์œ„ํ•œ ์ ˆ์ฐจ
    1. Custom Validator๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ Custom Annotation ์ •์˜
    2. ์ •์˜ํ•œ Custom Annotation์— ๋ฐ”์ธ๋”ฉ ๋˜๋Š” Custom Validator ๊ตฌํ˜„
      CustomValidator๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ConstraintValidator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ
    3. ์œ ํšจ์„ฑ ๊ฒ€์ฆ์ด ํ•„์š”ํ•œ DTO ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— Custom Annotation ์ถ”๊ฐ€

'SEB > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

044 | Exception Handling in Spring MVC  (0) 2022.08.24
043 | Layer interconnect & Class Mapping  (0) 2022.08.23
042 | DTO with HTTP Request & Response  (0) 2022.08.22
031 | RDBMS, SQL, ACID  (0) 2022.08.04
030 | REST API  (0) 2022.08.03
Comments