Dagger Hilt (Для начинающих)

от автора

Я являюсь разработчиком мобильных приложений с опытом уже более 3х лет! Я всегда разрабатываю мобильные приложения один — это требует моя работа. Но сегодня я хочу поделиться с Вами тем, что такое Dagger Hilt!

Следите за мной в телеграм

Dagger Hilt — это необходимый каждому инструмент, который упрощает в разы разработку мобильных приложений. Служит для внедрения зависимостей. В первую очередь он необходим тем, у кого в проекте есть множество классов, которые требуют реализации. Хотите чтоб за вас это сделал кто-то другой? Dagger Hilt к вашим услугам.

Hilt — это библиотека внедрения зависимостей для Android, которая упрощает шаблонное внедрение зависимостей вручную в ваш проект. Выполнение внедрения зависимостей вручную требует от вас создания каждого класса и его зависимостей вручную, а также использования контейнеров для повторного использования и управления зависимостям

⭐ Преимущества

  • Быстрый старт

  • Упрощенное управление зависимостями

  • Интеграция с Android компонентами (Activity, Fragment, ViewModel)

⭐ Добавление в проект

Version Catalog:

[versions] # other versions hilt-version = "2.51.1"   [libraries] # other libraries hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt-version" } hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt-version" } hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version = "1.2.0" }   [plugins] # other plugins hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt-version" }

build.gradle.kts (Module :app)

plugins {     // other plugins     id("kotlin-kapt")     alias(libs.plugins.hilt) }  kapt {     correctErrorTypes = true }  dependencies {   // other dependencies   implementation(libs.hilt.android)   kapt(libs.hilt.compiler)   implementation(libs.hilt.navigation.compose)  }

build.gradle.kts (Project: YourProjectName)

plugins {     // other plugins     alias(libs.plugins.hilt) apply false }

⭐ Как его использовать

Вы должны определить класс App. Это базовый класс без которого проект не сможет подтянуть Hilt.

Все приложения, использующие Hilt, должны содержать класс Application , помеченный @HiltAndroidApp . 

@HiltAndroidApp запускает генерацию кода Hilt, включая базовый класс для вашего приложения, который служит контейнером зависимостей на уровне приложени 

Инициализируете этот класс в манифесте!

@HiltAndroidApp class App: Application() { }

⭐ Внедрение зависимостей в классы

Как только Hilt настроен в вашем классе Application и доступен компонент уровня приложения, Hilt может предоставлять зависимости другим классам Android, имеющим аннотацию @AndroidEntryPoint

@AndroidEntryPoint class ExampleActivity : AppCompatActivity() { ... }
  • Application (с помощью @HiltAndroidApp )

  • ViewModel (с помощью @HiltViewModel )

  • Activity

  • Fragment

  • View

  • Service

  • BroadcastReceiver

Именно эти компоненты поддерживает Hilt. Все те компоненты, что не отмечены «с помощью» используют аннотацию @AndroidEntryPoint

Каждый компонент должен быть аннотирован. Это дает Hilt знать, с какого компонента начать внедрять зависимости. Это стартовые точки для Hilt-а

⭐ Реальные примеры (кейсы)

Аннотация @Inject
class TestClassInject @Inject constructor() {     fun invoke1() = "Hello world"     val invoke2 = "Hello world 2" }

В MainActivity.kt

@AndroidEntryPoint class MainActivity : ComponentActivity() {   @Inject lateinit var testClassInject: TestClassInject    override fun onCreate(savedInstanceState: Bundle?) {     super.onCreate(savedInstanceState)     testClassInject.invoke1()    } }

ВАЖНО: переменная, которая помечено @Inject не может быть приватной!

На это мой пост про Dagger Hilt для начинающих заканчивается. Следующий пост будет о более сложных компонентах и их применениях. Узнаете, как красиво оформить ваш репозитория при использовании Dager Hilt и как можно использовать Hilt в классах из вне. Интересно? Читайте дальше и вы станете настоящим гуру!


ссылка на оригинал статьи https://habr.com/ru/articles/848690/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *