Hilt 코드 추가/변경 및 구조 수정

수호·2025년 11월 24일
post-thumbnail

변경 이유

→ 같은 타입의 의존성이 2개 이상 있을 경우 Hilt가 자동으로 분류를 못 해준다. 그래서 Hilt에게 해당 부분은 이거야 라고 이름표를 붙여주는 것 “Qualifier” 입니다. 현재는 Payon부분만 구현되어있어 이러한 에러가 발생하지 않았지만 추후 결제 수단이 추가 될 경우 해당 부분은 필수로 작업해야한다.

  1. 구조 변경
1. core:data ReaderStrategy.kt -> core:domain ReaderStrategy.kt 코드 위치 변경
→ 인터페이스는 항상 상위 계층에 있어야 함
→ Clean Architecutre 원칙 : 상위 계층(domain)은 하위 계층(data, implementation)에 의존하지 않는다.
													 하위 계층이 상위 계청(interface)에 의존해야 한다.
  1. 코드 추가/변경
core:data:Qualifier.kt

/**
 * Qualifier(이름표) Annotation 만들기
 */

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class PayonReaderQualifier

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class SamsungPayReaderQualifier
core:data:ReaderFactory.kt

class ReaderFactory @Inject constructor(
    @PayonReaderQualifier private val payonReader: ReaderStrategy,
    @SamsungPayRederQualifier private val samsungReader: ReaderStrategy
) {
    fun getReader(type: ReaderType): ReaderStrategy = when (type) {
        ReaderType.PAYON -> payonReader
        ReaderType.SAMSUNG_PAY -> samsungReader
    }
}
core:payon:ReaderBindModule.kt

@Module
@InstallIn(SingletonComponent::class)
abstract class ReaderBindModule {

    @Binds
    @PayonReaderQualifier
    abstract fun bindPayonReader(
        impl: PayonReader
    ): ReaderStrategy

}
profile
처음부터 다시 시작!!

0개의 댓글