Назад к вопросам
СБЕР
IT One
Junior — Middle
63
Как работают области видимости компонентов в Spring и в чем их особенности?
Компании, где спрашивали
Ответ от нейросети
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 {
// ...
}