Mediumspringscope

Какие scope у Spring Bean?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Scope — жизненный цикл bean-а.

  • singleton (default) — один экземпляр на контейнер;
  • prototype — новый экземпляр при каждом getBean/inject;
  • request — один bean на HTTP request (web);
  • session — один bean на HTTP session;
  • application — один bean на ServletContext;
  • websocket — один bean на WebSocket session.
@Component
@Scope("prototype")
class ShoppingCart { /* состояние per consumer */ }
  • Singleton inject в prototype — prototype создаётся один раз при inject;
  • Решение: @Lookup, ObjectFactory<T>, Provider<T>, или proxy-mode;
  • @RequestScope, @SessionScope — сокращения;
  • В singleton — потокобезопасность на ответственности разработчика.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.