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

๋ชฉ๋ก์ „์ฒด ๊ธ€ (69)

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

043 | Layer interconnect & Class Mapping

๐ŸŽˆ DI๋ฅผ ํ†ตํ•œ ์„œ๋น„์Šค ๊ณ„์ธต ←→ API ๊ณ„์ธต ์—ฐ๋™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Service: ๋„๋ฉ”์ธ ์—…๋ฌด ์˜์—ญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค ๊ณ„์ธต์€ ๋Œ€๋ถ€๋ถ„ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. Spring Bean์œผ๋กœ ๋“ฑ๋ก Controller ํด๋ž˜์Šค์— @RestController ์ถ”๊ฐ€ Service ํด๋ž˜์Šค์— @Service ์ถ”๊ฐ€ ์ƒ์„ฑ์ž ๋ฐฉ์‹์˜ DI๋Š” ์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ์—๋Š” @Autowired ์• ๋„ˆํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ DI๊ฐ€ ์ ์šฉ๋œ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ธต๊ณผ API ๊ณ„์ธต์„ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์€ API ๊ณ„์ธต์—์„œ ๊ตฌํ˜„ํ•œ Controller ํด๋ž˜์Šค๊ฐ€ ์„œ๋น„์Šค ๊ณ„์ธต์˜ Service ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๐ŸŽˆ ๋งคํผ(Mapper)๋ฅผ ์ด์šฉํ•œ DTO ํด๋ž˜..

SEB/TIL 2022. 8. 23. 20:24
042 | DTO ์œ ํšจ์„ฑ ๊ฒ€์ฆ

๐ŸŽˆDTO ์œ ํšจ์„ฑ ๊ฒ€์ฆ์ด ํ•„์š”ํ•œ ์ด์œ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ๊ฐ’์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ก ํŠธ์—”๋“œ ์ชฝ์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์„œ๋ฒ„ ์ชฝ์—์„œ ํ•œ๋ฒˆ ๋” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ์ชฝ์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋Š” ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ์ธก๋ฉด์—์„œ ํ•„์š”ํ•œ ์ž‘์—…์ด๋‹ค. ๐ŸŽˆDTO ํด๋ž˜์Šค์— ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์ ์šฉํ•˜๊ธฐ ๐Ÿงฉ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•œ ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation:2.7.3' } ๐ŸŽˆ@PathVariable ์œ ํšจ์„ฑ ๊ฒ€์ฆ @PathVariable์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค์— @Validated์„ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค. ์•ˆ..

SEB/TIL 2022. 8. 23. 01:23
042 | DTO with HTTP Request & Response

๐ŸŽˆ DTO(Data Trasfer Object) ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ(Martin Fowler)๊ฐ€ ‘Patterns of Enterprise Application Architecture’ ๋ผ๋Š” ์ฑ…์—์„œ ์ฒ˜์Œ ์†Œ๊ฐœํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์˜ ํ•˜๋‚˜์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„ ์ชฝ์œผ๋กœ ์ „์†กํ•˜๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ ๋ฐ›์„ ๋•Œ, ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ ์ชฝ์œผ๋กœ ์ „์†กํ•˜๋Š” ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ตฌ๊ฐ„ ํด๋ผ์ด์–ธํŠธ → ์„œ๋ฒ„: ์š”์ฒญ(request) ๋ฐ์ดํ„ฐ ์„œ๋ฒ„ → ํด๋ผ์ด์–ธํŠธ: ์‘๋‹ต(response) ๋ฐ์ดํ„ฐ DTO ํด๋ž˜์Šค: ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ „๋‹ฌ ๋ฐ›๋Š” ์—ญํ•  ๐ŸŽˆ DTO๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ํด๋ผ์ด์–ธํŠธ์˜ Request Body๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋ชจ๋‘..

SEB/TIL 2022. 8. 22. 22:46