728x90

DI 3

[Android] Dependency Injection Part 3. Dagger basics

์ž‘์„ฑ์ผ: 2020.03.02 ์ด ๊ธ€์€ Android Developer ๊ฐ€์ด๋“œ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” Kotlin๋งŒ ๊ฐ€์ ธ์™”์œผ๋ฉฐ, Java ์ฝ”๋“œ๋Š” ์›๋ฌธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์˜์กด์„ฑ ์ฃผ์ž…์ด๋‚˜ Service locator ์‚ฌ์šฉ์€ ํ”„๋กœ์ ํŠธ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Dagger๋ฅผ ์‚ฌ์šฉํ•ด ๋””ํŽœ๋˜์‹œ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋”๋ผ๋„ ๋ณต์žก์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Dagger์˜ ์žฅ์  Dagger๋Š” ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šด ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋„๋ก ์•„๋ž˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Part 2์—์„œ ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ๋˜ AppContainer ์ฝ”๋“œ(application graph) ์ƒ์„ฑ Application graph์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋“ค์— ๋Œ€ํ•œ ํŒฉํ† ๋ฆฌ ์ฝ”๋“œ ์ƒ์„ฑ โž” ..

[Android] Dependency Injection Part 2. ์ง์ ‘ ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๊ธฐ

์ž‘์„ฑ์ผ: 2020.01.16 ์ด ๊ธ€์€ Android Developer ๊ฐ€์ด๋“œ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” Kotlin๋งŒ ๊ฐ€์ ธ์™”์œผ๋ฉฐ, Java ์ฝ”๋“œ๋Š” ์›๋ฌธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๊ธฐ Android์—์„œ ๊ถŒ์žฅํ•˜๋Š” ์•ฑ ์•„ํ‚คํ…์ฒ˜๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ž‘์€ ํด๋ž˜์Šค๋“ค๋กœ ๋”์šฑ ์ชผ๊ฐ  ํ›„, ์‹คํ–‰์„ ์œ„ํ•ด ๊ฐ ๋””ํŽœ๋˜์‹œ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. MVVM ์•„ํ‚คํ…์ฒ˜๋‚˜ Repository ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, Anemic Repository๋ฅผ ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค! ํด๋ž˜์Šค ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋Š” ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , ๊ฐ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์˜์กดํ•˜๋Š” ํด๋ž˜์Šค์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํด๋ž˜์Šค์™€ ์˜์กด๊ด€๊ณ„๋ฅผ ๊ทธ๋ฆฌ๋ฉด ๊ณง ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ1์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทธ๋ž˜..

[Android] Dependency Injection Part 1. Overview

์ž‘์„ฑ์ผ: 2020.01.14 ์ด ๊ธ€์€ Android Developer ๊ฐ€์ด๋“œ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” Kotlin๋งŒ ๊ฐ€์ ธ์™”์œผ๋ฉฐ, Java ์ฝ”๋“œ๋Š” ์›๋ฌธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…(Dependency injection, DI)์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ , Android ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. DI์˜ ์›์น™์„ ๋”ฐ๋ฅด๋ฉด ์ข‹์€ ์•ฑ ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ฐ˜์„ ๊ฐ–์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DI๋ฅผ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์  ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฆฌํŒฉํ† ๋ง ์šฉ์ด ํ…Œ์ŠคํŠธ ์šฉ์ด DI์˜ ๊ธฐ๋ณธ ๊ฐœ๋… Android์—์„œ์˜ DI๋ฅผ ์‚ดํŽด๋ณด๊ธฐ ์ „์—, ์ด ํŒŒํŠธ์—์„œ๋Š” DI์˜ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ข€ ๋” ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ž€? ํ•œ ํด๋ž˜์Šค์—์„œ ๋‹ค๋ฅธ ํด๋ž˜์Šค ์ฐธ์กฐ๋Š” ์ž์ฃผ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Car ํด๋ž˜์Šค๋Š” Engi..