Каково количество прототипных бинов, которые внедряются в singleton бин в Spring?

Чтобы получить новый экземпляр prototype бина при каждом вызове, нужно использовать специальные механизмы, например:

Короткий ответ

Что ответить на собеседовании

В Spring, если singleton бин внедряет prototype бин напрямую через обычное автосвязывание, то prototype бин создаётся один раз при создании singleton бина и используется повторно — то есть фактически внедряется один экземпляр prototype бина.

Подробный разбор

Ответ с пояснениями

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее