依存性注入はHiltベースから始めましょうか?
この記事では,Android Jetpack依存注入庫Hiltの基礎知識をまとめた.
依存注入の基礎部分を理解しているとします.私が整理した依存性注入の基礎に関する文章を読みたい場合は、以下のリンクで読むことができます.
依存注入(DI)は、依存注入にとって簡単ですか?アクセスの試行
依存注入には3つの方法があります.
1.注入作成者
2.注入方法
3.現場注入
Android MVVM構造とRepository Patternを使用した開発では、
これらの問題を解決するために、Koin、Dagger、Hiltなどの依存性を注入するためにライブラリを使用します.その中でHiltについてお話しします
HiltライブラリはDaggerベースのコンパイル時間にコードを生成するための依存注入ライブラリである.従来のDaggerライブラリはAnnotationやボイラプレートを多く使用しているため高い運動曲線を持つと考えられていたため使いにくい.
しかし、Androidの公式ブログによると、5月4日に「安定した解放」を使用して、これらの欠点を補い、Androidのフレームワークを適切に修正することができる.
詳細については、まず使用方法について説明します. Androidのアプリ. EntryPoint 提供 次に、モジュールが正常に注入されるには、次の手順に従ってAndroidクラスにコンストラクション関数注入を行う必要があります.注入時
モジュールをインストールする場所を示します.次のコンポーネントをインストールできます.
これらの構成部品のライフサイクル. 次のリンクを参照してください.
注入が必要なモジュールにインタフェースがある場合は、作成者を注入できないため、インタフェースのインプリメンテーションをバインドします.主にAndroidがRepository Patternを使用する項目では、Repository Layerを例として使用できます.
外部ライブラリに作成されたインスタンスまたはジェネレータPatternによって作成されたインスタンスに注入オブジェクトを作成する場合に必要です.Androidは主に、RetrofitオブジェクトまたはOkHttpクライアントオブジェクトを単一のポイントで作成するために使用されます.
では、Hiltを使用してテストコードをテストコードに適用する方法を見てみましょう.
実際、HiltはUnit Testではあまり価値がありません.構造関数注入を行う場合,実際のモジュールを注入する必要がなく,モジュールのパッケージ依存性を注入するだけである.
では、UIテストがどのように使われているかを見てみましょう.
Android UIテストを行う場合、
これまでHiltのデフォルトAnnotationと使い方,およびそれらの用途について理解してきた.
Hiltは、コンパイル時に注入するためにコードを生成するため、コンパイル時にエラーをキャプチャする利点がある.
他にもDIライブラリがありますが、Google公式ドキュメントでDIベストプラクティスで発表されているHiltは、他のライブラリよりもAndroidで安定していると思います.ちょっと使ってもいいです.
Hilt is stable! Easier dependency injection on Android
「Hi付きAndroid DI」で依存注入
Android Hiltについて
Dagger HiltへのAndroid依存性の注入を開始
依存注入の基礎部分を理解しているとします.私が整理した依存性注入の基礎に関する文章を読みたい場合は、以下のリンクで読むことができます.
依存注入(DI)は、依存注入にとって簡単ですか?アクセスの試行
🌱 依存注入方式
依存注入には3つの方法があります.
1.注入作成者
2.注入方法
3.現場注入
Android MVVM構造とRepository Patternを使用した開発では、
Repository
実装とViewModel
実装で、主に以下の方法を使用しています.class InjectTargetRepository(
private val injectedAPI: InjectedAPI
)
class InjectTargetViewModel(
private val injectedRepository: InjectedRepository
)
ただし、上記で作成したビューモデルをビューで使用するには、ビューにRepositoryオブジェクトを作成し、ビューモデルを作成するときにビューに注入する必要があります.これにより,ビューとRepositoryは密接な関係となる.これらの問題を解決するために、Koin、Dagger、Hiltなどの依存性を注入するためにライブラリを使用します.その中でHiltについてお話しします
🗡 Hilt
HiltライブラリはDaggerベースのコンパイル時間にコードを生成するための依存注入ライブラリである.従来のDaggerライブラリはAnnotationやボイラプレートを多く使用しているため高い運動曲線を持つと考えられていたため使いにくい.
しかし、Androidの公式ブログによると、5月4日に「安定した解放」を使用して、これらの欠点を補い、Androidのフレームワークを適切に修正することができる.
詳細については、まず使用方法について説明します.
@HiltAndroidApp
class HiltExampleApplication: Application() {...}
@AndroidEntryPoint
class HiltActivity: Activity() {...}
@HiltViewModel
class HiltViewModel : ViewModel() {...}
上のコードに示すように、3つのデフォルトのAnnotationが存在します.@HiltAndroidApp
@AndroidEntryPoint
@HiltViewModel
@Inject
Annotationを使用します.@HiltViewModel
class SimpleViewModel
@Inject
constructor(
private val simpleRepository: SimpleRepository
) : ViewModel() { ... }
そして. @HiltViewModel
Android AAC ViewModelへの注入もサポートされています.また、Navigation Graphを使用して作成されたSharedView Modelもサポートされています.@AndroidEntryPoint
class SimpleFragment: Fragment() {
private val simpleViewModel: SimpleViewModel by viewModels()
private val simpleSharedViewModel: SimpleSharedViewModel by hiltNavGraphViewModels(R.id.simple_graph)
...
}
では,以上のコードでは構造関数注入が行われているが,これら注入するモジュールはどのように生成されるのか.@Module
@InstallIn(SingletonComponent::class)
object SimpleModuleObject {
@Provides
fun provideSimpleModule(): SimpleInterface = SimpleInterfaceImpl
}
@Module
@InstallIn(SingletonComponent::class)
abstract class SimpleModuleAbstract {
@Binds
abstract fun bindSimpleInterface(simpleInterfaceImpl: SimpleInterfaceImpl): SimpleInterface
}
上記のコードに示すように、モジュールを作成する場合、デフォルトでは4つのAnnotationが必要です.@module
@InstallIn
@Provides
@Binds
@module Annotation
@HiltAndroidApp
, @AndroidEntryPoint
, 例えば、@HiltViewModel
は、オブジェクトまたはクラスがHiltに依存性を注入するためのモジュールであることを示す.@InstallIn Annotation
モジュールをインストールする場所を示します.次のコンポーネントをインストールできます.
これらの構成部品のライフサイクル. 次のリンクを参照してください.
@Binds Annotation
注入が必要なモジュールにインタフェースがある場合は、作成者を注入できないため、インタフェースのインプリメンテーションをバインドします.主にAndroidがRepository Patternを使用する項目では、Repository Layerを例として使用できます.
@Provides Annotation
外部ライブラリに作成されたインスタンスまたはジェネレータPatternによって作成されたインスタンスに注入オブジェクトを作成する場合に必要です.Androidは主に、RetrofitオブジェクトまたはOkHttpクライアントオブジェクトを単一のポイントで作成するために使用されます.
✅ Test
では、Hiltを使用してテストコードをテストコードに適用する方法を見てみましょう.
実際、HiltはUnit Testではあまり価値がありません.構造関数注入を行う場合,実際のモジュールを注入する必要がなく,モジュールのパッケージ依存性を注入するだけである.
では、UIテストがどのように使われているかを見てみましょう.
Android UIテストを行う場合、
@HiltAndroidTest
Annotationを使用します.@HiltAndroidTest
class SimpleFragmentTest { ... }
もちろん、基本モジュールを作成するように、テストクラスでテストで使用するモジュールを宣言することもできます.これまでHiltのデフォルトAnnotationと使い方,およびそれらの用途について理解してきた.
Hiltは、コンパイル時に注入するためにコードを生成するため、コンパイル時にエラーをキャプチャする利点がある.
他にもDIライブラリがありますが、Google公式ドキュメントでDIベストプラクティスで発表されているHiltは、他のライブラリよりもAndroidで安定していると思います.ちょっと使ってもいいです.
References
Hilt is stable! Easier dependency injection on Android
「Hi付きAndroid DI」で依存注入
Android Hiltについて
Dagger HiltへのAndroid依存性の注入を開始
Reference
この問題について(依存性注入はHiltベースから始めましょうか?), 我々は、より多くの情報をここで見つけました https://velog.io/@wooyoung-tom/의존성-주입-시작-Hilt-기초부터-해보실래요テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol