Saya bermaksud membuat penghitung waktu nyata. Jadi satu pengguna dapat menambah nilai penghitung untuk kunci tertentu. Sementara yang lain mendapatkan nilai hitungan yang diperbarui melalui permintaan ajax (baik dalam satu lingkaran, atau menggunakan metode polling yang panjang). Saya akan menggunakan pengontrol pegas, yang akan menyuntikkan kelas layanan, bisakah saya melakukan sesuatu seperti di bawah ini, atau adakah cara yang lebih baik:
@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}};
}
Edit ada beberapa jawaban tetapi tidak jelas mana yang terbaik : Sinkronkan metode penambahan? Buat peta di kelas lain (repositori beranotasi) dan masukkan itu? Sesuatu yang lain?