Kaip Quarkus pasiekiamas Inversion of Control efektas naudojant priklausomybių injekciją?
sobes.tech AI
Atsakymas iš AI
Quarkus'e Inversijos kontrolės (IoC) efektas pasiekiamas per priklausomybių injekcijos (Dependency Injection, DI) mechanizmą, kuris grindžiamas CDI (Contexts and Dependency Injection) specifikacija. Quarkus automatiškai skenuoja klases ir komponentus, pažymėtus anotacijomis kaip @Inject, @ApplicationScoped, @Singleton ir kitomis, ir valdo jų gyvavimo ciklą.
Kai kode reikalinga priklausomybė, Quarkus automatiškai injekuoja reikalingą objektą, išlaisvindamas kūrėją nuo rankinio instancijų kūrimo ir valdymo. Tai palengvina įgyvendinimų keitimą, supaprastina testavimą ir didina programos modulinius gebėjimus.
Pavyzdys:
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());
}
}
Čia Consumer nesukuria Service objekto pats, o gauna jį iš Quarkus konteinerio per DI, kas yra IoC pasireiškimas.