リアルタイムカウンターを作成するつもりです。したがって、1人のユーザーが特定のキーのカウンター値を増やすことができます。一方、別のユーザーはajaxリクエストを介して(ループ内で、または長いポーリング方法を使用して)更新されたカウント値を取得します。私はスプリングコントローラーを使用します。これはサービスクラスを注入します。以下のようなことを行うことができますか、それとももっと良い方法があります:
@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}};
}
編集いくつかの答えがありますが、どれが最良かは明確ではありません:addメソッドを同期しますか?別のクラス(注釈付きリポジトリ)にマップを作成し、それを注入しますか?他に何かありますか?