Что такое область видимости (scope) бина Session в Spring?

«Что такое область видимости (scope) бина Session в Spring?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Spring Session Scope определяет жизненный цикл бина в контексте HTTP-сессии пользователя.

Ключевые особенности:

  • Бин создается при начале новой HTTP-сессии.
  • Один и тот же экземпляр бина возвращается в течение всей сессии одного пользователя.
  • Бин уничтожается при завершении сессии (timeout или инвалидация).
  • Для каждого пользователя (сессии) создается свой отдельный экземпляр бина.

Объявление в аннотациях:

@Component
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserPreferences {
    // состояние, специфичное для сессии
}

Использование в XML:

<bean id="userPreferences" class="com.example.UserPreferences" scope="session">
    <aop:scoped-proxy/>
</bean>

Почему это важно: Эта область видимости идеально подходит для хранения пользовательских данных в течение сессии, таких как корзина покупок, настройки интерфейса или информация о процессе многошаговой формы. Для работы требуется поддержка веб-контекста (WebApplicationContext).