Вы должны определить, что такое Session
.
Как правило, в веб-проекте сеанс связан с HTTP Session
. Они управляются весной на @Scope(value = WebApplicationContext.SCOPE_SESSION)
. Bean будет иметь прокси-сервер, управляя экземплярами вашей службы автоматически.
В этом случае вы не хотите использовать Static Map
. Действительно, статический объект является глобальным для вашей программы, и только один экземпляр будет существовать в любое время, например, Singleton
.
Если вы определяете сеанс как начало и конец вашего процесса сервера, то в порядке.
Итак, для создания этой карты следует создать статическую карту или создать для нее одноэлементный bean-компонент и использовать autwiring?
Это близко к тому же. Единственное различие заключается в том, как он будет создан. Статическая карта будет создана JVM сразу после загрузки вашего Class
. Синглтон Бин будет создан весной при первом использовании.
Главное преимущество Bean в вашем случае - Inversion of Control
для вашего Unit Tests
.
Я использовал статическую карту, но заметил, что даже после остановки сервера и запустить его снова, экземпляр карты был со значениями из предыдущей сессии
Обычно, объект потеряет свои данные, когда сервер закрыто, если только ваша Карта не была Serialized
сервером и сохранена в файле сеанса на диске. Возможно, вам стоит попытаться перенести свою статическую карту в свой класс.
Улучшено ли это, если я буду использовать бобы?
Нет, поведение будет таким же.
Не забывайте, что в качестве одноэлементной карты ваша карта должна быть синхронизирована с Collections.synchronizedMap()
. В противном случае у вас будут неприятности при использовании.
Если вы действительно остановили сервер, то статическая карта не запомнит значения - при запуске она будет пустой. Не знаете, почему вы все еще видите ценности - какой это сервер? –
Вы говорите о сеансах HTTP?Что вы подразумеваете под сеансом? Где ваш код? –