2016-05-16 6 views
0

У меня вопрос, что у меня есть проект на основе весны-MVC. В котором есть класс, содержащий всю статическую переменную, доступную всем пользователям. Все Bean являются singleton, что создает проблемы, когда несколько пользователей обращаются к приложению: последний пользователь может изменить статическую переменную одновременно с выполнением своей задачей предыдущего пользователя. Таким образом, после последнего пользователя появляются данные предыдущего пользователя, которые перекрываются с данными последнего пользователя, который создает конфликт в отчете. Я также пользовательский прототип bean, но я не нашел никаких решений из-за статической переменной. Итак, у кого есть решение, связанное с этой проблемой? Благодарю.прототип весеннего боба с глобальной статической переменной

+1

показать код! –

ответ

1

Во-первых: используйте db и сохраните данные там. Если вы перезапустите свою программу, все изменения, внесенные пользователями, будут отброшены.

Во-вторых: вы пометили его по-разному, так как это вопрос согласованности: сделайте блок синхронизации, сохраните версию, после ввода блока синхронизации проверьте, изменяется ли изменение последней версии или предыдущей: , если вы измените последнюю фиксацию - ok , если это не так: обработать исключение.

третий: это плохо пахнет. Вы уверены, что вам нужны все пользователи ИЗМЕНИТЬ один параметр? Ведете ли вы учет того, кто и как его модифицировал? Синглтоны в основном используются как неизменяемые объекты только для чтения, которые обмениваются информацией во всем приложении.

И дальше: пожалуйста, не используйте статические изменяемые переменные. Шутки в сторону.

Смежные вопросы