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