Я читаю блог о DI, и есть некоторые предложения, которые я не понимаю.
Что означает, что DI является одноэлементным объектом во время выполнения, и только те объекты в диапазоне сканирования пружины (с @Component
) могут использовать DI по аннотации (@Autowired
), в то время как другие создаются новым нельзя использовать DI по аннотации?
не может использовать DI, потому что Отец может быть создан новым.
public class Father{
private SonRepository sonRepo;
private Son getSon(){return sonRepo.getByFatherId(this.id);}
public Father(SonRepository sonRepo){this.sonRepo = sonRepo;}
}
может использовать DI, потому что FatherFactory - одноэлементный объект, сгенерированный системой.
@Component
public class FatherFactory{
private SonRepository sonRepo;
@Autowired
public FatherFactory(SonRepository sonRepo){}
public Father createFather(){
return new Father(sonRepo);
}