Junior — Middle
როგორ შეიძლება განხორციელდეს Beans-ის დამოკიდებულებების ინექცია პროგრამაში?
sobes.tech AI
პასუხი AI-სგან
Java-да, Beans өчен Dependency Injection (DI) төрле ысуллар белән тормышка ашырыла ала:
- Конструктор аша — бәйлелектәр классның конструкторына тапшырыла. Бу иң өстенлекле ысул, чөнки ул үзгәрмәүчән объектлар ясауга мөмкинлек бирә һәм тестлауны җиңеләйтә.
public class Service {
private final Repository repo;
public Service(Repository repo) {
this.repo = repo;
}
}
- Setterлар аша (Setter Injection) — бәйлелектәр объект ясаунынан соң setter методлары аша билгеләнә.
public class Service {
private Repository repo;
public void setRepository(Repository repo) {
this.repo = repo;
}
}
- Кырлар аша (Field Injection) — бәйлелектәр турыдан-туры класс кырларына аннотацияләр ярдәмендә инжектлана, мәсәлән, Spring-да
@Autowired.
public class Service {
@Autowired
private Repository repo;
}
- Фабрика ысуллары яки конфигурация класслары аша — ясау һәм бәйләү эшләре конфигурация классларында яки XML-да башкарыла.
Һәр ысулның үз өстенлекләре һәм кимчелекләре бар, ләкин заманча кушымталарда еш кына конструкторлы инъекция яки Spring аннотацияләре автоматик бәйләнеш өчен кулланыла.