Я намерен создать счетчик реального времени. Таким образом, один пользователь может увеличить значение счетчика для определенного ключа. В то время как другой получает обновленное значение счетчика через запрос ajax (либо в цикле, либо с использованием какого-либо метода длительного опроса). Я буду использовать контроллер Spring, который будет внедрять класс обслуживания. Могу ли я сделать что-то вроде ниже или есть лучший способ:
@Service
public MyService{
//instance variable in spring injected service class, not sure if this correct
static final Map<String, Integer> myMap;
public void add(String key){
Integer count = myMap.get(key);
count++;
myMap.put(key, count);
}
//accessed via ajax loop (and controller), if value changes update display
public Integer getCount(String key){
return myMap.get(key)
}
@PostConstruct
public load(){
myMap = new HashMap<String, Integer>(10){{//initialize}};
}
Изменить есть несколько ответов, но неясно, какой из них лучше: Синхронизировать метод добавления? Создайте карту в другом классе (аннотированный репозиторий) и введите ее? Что-то другое ?