๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ ๊ธฐ๋ก/Filmo ์˜ํ™” ํ”„๋กœ์ ํŠธ

[hilt 2ํƒ„] hilt ๋ฅผ ์‚ฌ์šฉํ•œ ์ข…์† ํ•ญ๋ชฉ ์‚ฝ์ž…

by hyeonha 2024. 2. 10.

1๏ธโƒฃHilt Application class

- Application ๋ž€?

๋”๋ณด๊ธฐ

์ „์—ญ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ ์ด์Šค๊ฐ€ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋งํ•œ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ application์€ ๋ชจ๋“  ์•กํ‹ฐ๋น„ํ‹ฐ๋‚˜ ์„œ๋น„์Šค์™€ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๋‚ด์—์„œ ๊ธฐ๋ณธํด๋ž˜์Šค์ด๋‹ค. 

Application ํด๋ž˜์Šค ๋˜๋Š” Application ํด๋ž˜์Šค์˜ ํ•˜์œ„ ํด๋ž˜์ˆ˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ณด๋‹ค ๋จผ์ € ์ธ์Šคํ„ด์Šคํ™”๋œ๋‹ค

Hilt๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์•ฑ์€ @HiltAndroidApp์œผ๋กœ ์ฃผ์„์ด ์ง€์ •๋œ Application ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•ด์•ผํ•œ๋‹ค.

1. ์ด ์–ด๋…ธํ…Œ์ด์…˜์„ Application์— ์ ์šฉํ•˜๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ Hilt์—์„œ ์‚ฌ์šฉํ•˜๋Š” Application์˜ ๊ธฐ๋ณธ ํด๋ž˜์Šค ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

2. Application ํด๋ž˜์Šค๋Š” ์˜์กด์„ฑ ์ฃผ์ž…์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค.

 

์ƒ์„ฑ๋œ ์ด Hilt ๊ตฌ์„ฑ ์š”์†Œ๋Š” Application ๊ฐ์ฒด์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ์— ์—ฐ๊ฒฐ๋˜๋ฉฐ ๊ด€๋ จํ•œ ์ข…์†ํ•ญ๋ชฉ์„ ์ œ๊ณตํ•œ๋‹ค.

๋˜ํ•œ ์ด Hilt ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์•ฑ์˜ ์ƒ์œ„ ๊ตฌ์„ฑ์š”์†Œ์ด๋ฏ€๋กœ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ด Application์—์„œ ์ œ๊ณตํ•˜๋Š” ์ข…์† ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์ปจํ…Œ์ด๋„ˆ๋ž€?

๋”๋ณด๊ธฐ

์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค. 

 

์ปจํ…Œ์ด๋„ˆ์—๋Š” ์—ฌ๋Ÿฌ ์œ ํ˜•์ด ์žˆ๋Š”๋ฐ ์˜์กด์„ฑ ์ฃผ์ž… ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

 

์šฐ๋ฆฌ ์ฝ”๋“œ ์‚ดํŽด๋ณด๊ธฐ

@HiltAndroidApp
class App : Application() {

 

2๏ธโƒฃAndroid ํด๋ž˜์Šค์— ์ข…์† ํ•ญ๋ชฉ ์‚ฝ์ž…

Application ํด๋ž˜์Šค์— Hilt๋ฅผ ์„ค์ •ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด

-> Hilt๋Š” @AndroidEntryPoint ์ฃผ์„์ด ์žˆ๋Š” ๋‹ค๋ฅธ Android ํด๋ž˜์Šค์— ์ข…์† ํ•ญ๋ชฉ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ ์š”์†Œ

๋”๋ณด๊ธฐ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์„ค์ •์„ ํฌํ•จํ•œ๋‹ค. 

 

1. Application ํด๋ž˜์Šค : ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง„์ž…์ ์ด๋ฉฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๋ฐ˜์—์„œ ๊ณต์œ ๋˜๋Š” ์„ค์ •์ด๋‚˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

 

2. Application ๋ชจ๋“ˆ : ์˜์กด์„ฑ ์ฃผ์ž…์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ์ฒด๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค. ๋„คํŠธ์›Œํฌ ๋ชจ๋“ˆ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋“ˆ ..

 

3. Application ์ปดํฌ๋„ŒํŠธ : ์˜์กด์„ฑ ์ฃผ์ž…์„ ๊ด€๋ฆฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

 

 

์ฝ”๋“œ 

@AndroidEntryPoint
class MenuDusplayActivity : AppCompatActivity() {

  @Inject lateinit var breakfastProvider : BreakfastMenuDataProvider
  ...
}

 

Android ํด๋ž˜์Šค์— @AndroidEntryPoint๋กœ ์ฃผ์„์„ ์ง€์ •ํ•˜๋ฉด ์ด ํด๋ž˜์Šค์— ์ข…์†๋œ Android ํด๋ž˜์Šค์—๋„ ์ฃผ์„์„ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋ž˜๊ทธ๋จผํŠธ์— ์ฃผ์„์„ ์ง€์ •ํ•œ๋‹ค๋ฉด ์ด ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ™œ๋™์—๋„ ์ฃผ์„์„ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.

 

@AndroidEntryPoint๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฐ Android ํด๋ž˜์Šค์— ๊ด€ํ•œ ๊ฐœ๋ณ„ Hilt ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐœ๋ณ„ Hilt ๊ตฌ์„ฑ์š”์†Œ๋Š” ํ•ด๋‹นํ•˜๋Š” ๊ฐ ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ข…์† ํ•ญ๋ชฉ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

@ AndroidEntryPoint ์€ ๊ฐ๊ฐ์˜ Android ํด๋ž˜์Šค์— ๋Œ€ํ•ด Hilt ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค.

์ฆ‰ ๊ฐ Android ํด๋ž˜์Šค๊ฐ€ Hilt์˜ ์˜์กด์„ฑ ์ฃผ์ž… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค!

 

- ๊ตฌ์„ฑ์š”์†Œ๋ž€ ์˜์กด์„ฑ ์ฃผ์ž…์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. Dagger๋Š” ์˜์กด์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด์™€ ์ด๋ฅผ ์š”์ฒญ๋ฐ›๋Š” ๊ฐ์ฒด ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

- Hilt ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์˜ ์ปดํฌ๋„ŒํŠธ์™€ ์•กํ‹ฐ๋น„ํ‹ฐ, ํ”„๋ž˜๊ทธ๋จผํŠธ, ์„œ๋น„์Šค ๋“ฑ์˜ Android ๊ตฌ์„ฑ ์š”์†Œ๋งˆ๋‹ค ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ๊ฐ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ข…์†ํ•ญ๋ชฉ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ฆ‰ AndroidEntryPoint๋ฅผ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ด ํด๋ž˜์Šค๋Š”  Hilt์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ„์ฃผ๋˜๊ณ  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์˜์กด์„ฑ ์ฃผ์ž…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

AndroidEntryPoint์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋œ ์•กํ‹ฐ๋น„ํ‹ฐ๋‚˜ ํ”„๋ž˜๊ทธ๋จผํŠธ์— ํ•„๋“œ๋กœ ์„ ์–ธ๋œ ๊ฐ์ฒด์— Inject ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ๋‹ค๋ฉด Hilt๋Š” ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ด์ค€๋‹ค!

์ฆ‰ ์ง€๊ธˆ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ๊ทธ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3๏ธโƒฃHilt binding (๊ฒฐํ•ฉ) ์ •์˜ : Hilt๊ฐ€ ํ•„์š”ํ•œ ์ข…์†ํ•ญ๋ชฉ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ• 

ํ•„๋“œ ์‚ฝ์ž…์ด๋ž€ ๊ฐ์ฒด์˜ ํ•„๋“œ์— ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.

- ํด๋ž˜์Šค์—์„œ ํ•„๋“œ๋ž€ ํด๋ž˜์Šค์— ํฌํ•จ๋œ ๋ณ€์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค!

 

binding ๊ฒฐํ•ฉ์€ ํŠน์ • ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ข…์†ํ•ญ๋ชฉ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.

 

์ƒ์„ฑ์ž ์‚ฝ์ž…

: ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„œ @Inject ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ Hilt์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.

class MenuDisplayActivity @Inject constructor(
	private val breakfastProvider : BreakfastProvider
  )
  { ... }

 

4๏ธโƒฃHilt ๋ชจ๋“ˆ

์ƒ์„ฑ์ž ์‚ฝ์ž…์„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. 

1. ์ธํ„ฐํŽ˜์ด์Šค

2. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค

์ด๋Ÿฐ ๊ฒฝ์šฐ Hilt ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ Hilt์— ๋ฐ”์ธ๋”ฉ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Hilt ๋ชจ๋“ˆ์€ @Module๋กœ ์ฃผ์„์ด ์ง€์ •๋œ ํด๋ž˜์Šค์ด๋‹ค.

Hilt ๋ชจ๋“ˆ์— @InstallIn ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์„œใ„น์น˜ํ•œ Android ํด๋ž˜์Šค๋ฅผ Hilt์— ์•Œ๋ ค์•ผํ•œ๋‹ค.

Hilt ๋ชจ๋“ˆ์— ์ œ๊ณตํ•˜๋Š” ์ข…์† ํ•ญ๋ชฉ์€ Hilt ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜๋Š” Android ํด๋ž˜์Šค์™€ ์—ฐ๊ฒฐ๋œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์ดํ•ดํ•ด๋ณด์ž!!!

Menu๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” Class์™€ ๊ทธ ํด๋ž˜์Šค์— ์•„์นจ ๋ฉ”๋‰ด๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” Breakfast ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

class Menu {

}

class BreakfastProvider {

	fun provideBreakfast() :String {
    
     	return "๊ณ„๋ž€ ํ›„๋ผ์ด์™€ ํ† ์ŠคํŠธ"
    
    }

 

5๏ธโƒฃ@Binds๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค ์‚ฝ์ž…

์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ƒ์„ฑ์ž ์‚ฝ์ž…์„ ํ•  ์ˆ˜ ์—†๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” @Binds๋กœ ์ฃผ์„์ด ์ง€์ •๋œ ์ถ”์ƒํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ”์ธ๋“œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

@Binds ์ฃผ์„์€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•ด์•ผํ•  ๋•Œ ์‚ฌ์šฉํ•  ๊ตฌํ˜„์„ Hilt์— ์•Œ๋ ค์ค€๋‹ค.

1. ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ์œ ํ˜•์€ ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ Hilt์— ์•Œ๋ ค์ค€๋‹ค.

2. ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ œ๊ณตํ•  ๊ตฌํ˜„์„ Hilt์— ์•Œ๋ ค์ค€๋‹ค.

 

@interfact MealService{
	fun getMealMethods()
    
}

class MealServiceImpl @Inject constructor(
...
) : MealService {...}

@Binds
abstract fun bindMealService(
	mealSerivceImpl : MealServiceImpl // ์ œ๊ณตํ•  ๊ตฌํ˜„์„ Hilt์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.
) : MealService // ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ Hilt์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.

 

 

 

6๏ธโƒฃ@Provides๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ์‚ฝ์ž…

ํด๋ž˜์Šค๊ฐ€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๋ฅผ ์†Œ์œ ํ•˜์ง€ ์•Š์€ Retrofit์ด๋‚˜ OkHttpClient ๋˜๋Š” ๋นŒ๋” ํŒจํ„ด์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ƒ์„ฑ์ž ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

1. ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ์œ ํ˜• : ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ Hilt์— ์•Œ๋ ค์ค€๋‹ค.

2. ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ : ํ•ด๋‹น ์œ ํ˜•์˜ ์ข…์† ํ•ญ๋ชฉ์„ Hilt์— ์•Œ๋ ค์ค€๋‹ค.

3. ํ•จ์ˆ˜ ๋ณธ๋ฌธ: ํ•ด๋‹น ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ• Hilt์— ์•Œ๋ ค์ค€๋‹ค.

 

 

728x90