Sobes.tech
Назад к вопросам
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 бин зависит от способа внедрения: при прямом внедрении — один экземпляр, при использовании фабрики — сколько угодно новых экземпляров по запросу.