Sobes.tech
Junior — Middle

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.