我需要为某些页面创建一个计数器。所以我创建了一个名为 Counter 的域:
class Counter {
java.sql.Date date;
Member member;
int count;
int submit;
//setter and getter...
}
计数是这个页面打开了多少次,提交是提交了多少次表单(联系表单的种类)。
我创建了一个名为 CounterService 的服务:
class CounterService {
List counters;
def load() {
counters = Counter.findAllByDate(new java.sql.Date(System.currentTimeMillis()));
}
def increaseCount(Member member) {
counters.each {
if(it.member.id = member.id) it.setCount(it.count + 1);
}
}
//the rest of the code...
}
我将使用 Quartz 作业每小时将计数器保存到数据库中。
你认为这个计数器变量是多线程安全的吗?因为 CounterService 会在很多 Controller 中被调用。我需要在服务器启动之前调用 load 并且我不知道在哪里调用它。对我应该在哪里调用 load() 有什么建议吗?或者,也许是页面计数器的更好解决方案?