Практическое правило заключается в том, что контроллеры и службы не предназначены для поддержания состояния, в частности, состояния клиента.
Кроме того, бины Spring по умолчанию являются одиночными: они являются общими для клиентов / запросов. Это объясняет поведение, которое вы замечаете.
Чтобы решить эту проблему, вы можете использовать HttpSession в памяти (старая практика), но это больше не рекомендуется, поскольку он привязывает клиента / пользователя к указанному c экземпляру сервера, который первым обработал его запрос. .
Желательно либо повторно отправлять данные при каждом запросе (что может быть затруднительно), либо лучше хранить данные в базе данных в памяти, такой как Redis.
Это быстро и не привязывает клиент к указанному c экземпляру вашего приложения весенней загрузки.
В Spring хорошая связь с использованием базы данных в памяти для обработки пользовательского состояния использует HttpSession, но Spring Session резервируется в базу данных (Redis или другую).
Для как использовать сессию с Spring MVC, у вас есть этот хороший пост .