Sobes.tech
Junior — Middle

Cum se realizează efectul Inversion of Control în Quarkus prin injecție de dependențe?

sobes.tech AI

Răspuns de la AI

În Quarkus, efectul de Inversiune a Controlului (IoC) se realizează prin mecanismul de injecție a dependențelor (Dependency Injection, DI), bazat pe specificația CDI (Contexts and Dependency Injection). Quarkus scanează automat clasele și componentele marcate cu adnotări precum @Inject, @ApplicationScoped, @Singleton și altele, și gestionează ciclul lor de viață.

Când în cod este necesară o dependență, Quarkus injectează automat obiectul necesar, eliberând dezvoltatorul de crearea manuală a instanțelor și gestionarea acestora. Acest lucru facilitează înlocuirea implementărilor, simplifică testarea și crește modularitatea aplicației.

Exemplu:

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());
    }
}

Aici, Consumer nu creează obiectul Service singur, ci îl primește de la containerul Quarkus prin DI, ceea ce reprezintă manifestarea IoC.