Sobes.tech
Back to questions
Junior — Middle
63

Каким образом в Quarkus достигается эффект Inversion of Control с помощью внедрения зависимостей (Dependency Injection)?

Answer from AI

sobes.tech AI

В Quarkus эффект Inversion of Control (IoC) достигается через механизм внедрения зависимостей (Dependency Injection, DI), основанный на спецификации CDI (Contexts and Dependency Injection). Quarkus автоматически сканирует классы и компоненты, помеченные аннотациями, такими как @Inject, @ApplicationScoped, @Singleton и другими, и управляет их жизненным циклом.

Когда в коде требуется зависимость, Quarkus внедряет нужный объект автоматически, освобождая разработчика от ручного создания экземпляров и управления ими. Это позволяет легко заменять реализации, упрощает тестирование и повышает модульность приложения.

Пример:

import javax.inject.Inject;
import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class Service {
    public String serve() {
        return "Service is working";
    }
}

@ApplicationScoped
public class Consumer {
    @Inject
    Service service;

    public void doWork() {
        System.out.println(service.serve());
    }
}

Здесь Consumer не создает объект Service самостоятельно, а получает его от контейнера Quarkus через DI, что и есть проявление IoC.