Ako sa dosahuje efekt Inversion of Control v Quarkus pomocou injekcie závislostí?
sobes.tech AI
Odpoveď od AI
V Quarkusu je efekt Inversion of Control (IoC) dosiahnut prostredníctvom mechanizmu injektáže závislostí (Dependency Injection, DI), založeného na špecifikácii CDI (Contexts and Dependency Injection). Quarkus automaticky skenuje triedy a komponenty označené anotáciami ako @Inject, @ApplicationScoped, @Singleton a ďalšími, a spravuje ich životný cyklus.
Keď je v kóde potrebná závislosť, Quarkus automaticky injektuje potrebný objekt, čím uvoľňuje vývojára od manuálneho vytvárania inštancií a ich správy. To uľahčuje nahrádzanie implementácií, zjednodušuje testovanie a zvyšuje modularitu aplikácie.
Príklad:
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());
}
}
Tu Consumer nevytvára objekt `Service sám, ale ho získava od Quarkus kontajnera prostredníctvom DI, čo je prejav IoC.