Назад к вопросам
Junior — Middle
60
Каково количество прототипных бинов, которые внедряются в singleton бин в Spring?
Компании, где спрашивали
Ви6 Сервисес
Ответ от нейросети
sobes.tech AI
В Spring, если singleton бин внедряет prototype бин напрямую через обычное автосвязывание, то prototype бин создаётся один раз при создании singleton бина и используется повторно — то есть фактически внедряется один экземпляр prototype бина.
Чтобы получить новый экземпляр prototype бина при каждом вызове, нужно использовать специальные механизмы, например:
ObjectFactoryилиProviderдля запроса нового экземпляра- метод с аннотацией
@Lookup
Пример с ObjectFactory:
@Component
public class SingletonBean {
@Autowired
private ObjectFactory<PrototypeBean> prototypeBeanFactory;
public void doSomething() {
PrototypeBean prototypeBean = prototypeBeanFactory.getObject();
prototypeBean.action();
}
}
Таким образом, количество внедряемых prototype бинов в singleton бин зависит от способа внедрения: при прямом внедрении — один экземпляр, при использовании фабрики — сколько угодно новых экземпляров по запросу.