Sobes.tech
Back to questions
Junior — Middle
72

Какую структуру имеет инструмент Dagger для внедрения зависимостей?

Companies where asked
amoCRMamoCRM

Answer from AI

sobes.tech AI

Dagger — это статический фреймворк для внедрения зависимостей в Android и Java. Его структура основана на следующих ключевых компонентах:

  • @Module — класс, который предоставляет зависимости через методы, помеченные аннотацией @Provides.
  • @Component — интерфейс, который связывает модули и места внедрения зависимостей. Компонент генерирует код для создания и предоставления объектов.
  • @Inject — аннотация, которая используется для указания точек внедрения зависимостей (например, конструкторов, полей или методов).

Пример:

@Module
class NetworkModule {
    @Provides
    OkHttpClient provideOkHttpClient() {
        return new OkHttpClient();
    }
}

@Component(modules = NetworkModule.class)
interface AppComponent {
    void inject(MainActivity activity);
}

public class MainActivity extends AppCompatActivity {
    @Inject
    OkHttpClient client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DaggerAppComponent.create().inject(this);
        // Теперь client инициализирован Dagger
    }
}

Таким образом, Dagger строит граф зависимостей на этапе компиляции, что повышает производительность и безопасность кода.