Sobes.tech
Senior
19

Какие scope есть в Spring? Что такое singleton scope?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

В Spring существуют несколько типов scope для бинов, определяющих время жизни и область видимости экземпляров:

  • singleton — по умолчанию, один экземпляр бина создаётся на весь контейнер Spring. Все запросы к этому бину получают один и тот же объект.
  • prototype — при каждом запросе создаётся новый экземпляр бина.
  • request — бин живёт в рамках одного HTTP-запроса (актуально для веб-приложений).
  • session — бин привязан к HTTP-сессии пользователя.
  • application — бин живёт в пределах ServletContext.
  • websocket — бин живёт в рамках WebSocket-сессии.

Singleton scope означает, что Spring создаёт и управляет одним экземпляром бина на весь контекст приложения. Это удобно для сервисов, которые должны быть единственными и разделяемыми, например, для компонентов, не хранящих состояние, или для кэширования.

Пример объявления singleton бина (по умолчанию):

@Service
public class MyService {
    // логика сервиса
}

Здесь MyService будет singleton, и все зависимости, которые его используют, получат один и тот же экземпляр.