Sobes.tech
Junior — Middle

Как се постига ефектът Инверсия на контрола в Quarkus чрез внедряване на зависимости?

sobes.tech AI

Отговор от AI

В Quarkus ефектът от Инверсия на Контрола (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.