Ответ
В 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).