Sobes.tech
Junior — Middle

როგორ შეიძლება განხორციელდეს Beans-ის დამოკიდებულებების ინექცია პროგრამაში?

sobes.tech AI

პასუხი AI-სგან

Java-да, Beans өчен Dependency Injection (DI) төрле ысуллар белән тормышка ашырыла ала:

  1. Конструктор аша — бәйлелектәр классның конструкторына тапшырыла. Бу иң өстенлекле ысул, чөнки ул үзгәрмәүчән объектлар ясауга мөмкинлек бирә һәм тестлауны җиңеләйтә.
public class Service {
    private final Repository repo;

    public Service(Repository repo) {
        this.repo = repo;
    }
}
  1. Setterлар аша (Setter Injection) — бәйлелектәр объект ясаунынан соң setter методлары аша билгеләнә.
public class Service {
    private Repository repo;

    public void setRepository(Repository repo) {
        this.repo = repo;
    }
}
  1. Кырлар аша (Field Injection) — бәйлелектәр турыдан-туры класс кырларына аннотацияләр ярдәмендә инжектлана, мәсәлән, Spring-да @Autowired.
public class Service {
    @Autowired
    private Repository repo;
}
  1. Фабрика ысуллары яки конфигурация класслары аша — ясау һәм бәйләү эшләре конфигурация классларында яки XML-да башкарыла.

Һәр ысулның үз өстенлекләре һәм кимчелекләре бар, ләкин заманча кушымталарда еш кына конструкторлы инъекция яки Spring аннотацияләре автоматик бәйләнеш өчен кулланыла.