Sobes.tech
Назад к вопросам
Junior — Middle
63

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

Компании, где спрашивали
СБЕРСБЕР
IT OneIT One

Ответ от нейросети

sobes.tech AI

В Spring области видимости (scopes) компонентов определяют жизненный цикл и видимость бинов в контейнере.

Основные области видимости:

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

Особенности:

  • Singleton — самый распространённый и экономичный по ресурсам.
  • Prototype требует ручного управления жизненным циклом, Spring не вызывает методы уничтожения.
  • Request и session scope полезны для веб-приложений, позволяют хранить состояние, связанное с конкретным пользователем или запросом.

Пример объявления с областью видимости prototype:

@Component
@Scope("prototype")
public class MyPrototypeBean {
    // ...
}