一部のページのカウンターを作成する必要があります。そこで、 Counter という名前のドメインを作成します。
class Counter {
java.sql.Date date;
Member member;
int count;
int submit;
//setter and getter...
}
Count はこのページが開いた回数、submit はフォーム (お問い合わせフォームの一種) が送信された回数です。
そして、 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 ジョブを使用して、1 時間ごとにカウンターをデータベースに保存します。
このカウンター変数はマルチスレッドセーフだと思いますか? CounterService は多くの Controller で呼び出されるためです。サーバーを起動する前に load を呼び出す必要がありますが、どこで呼び出すべきかわかりません。どこで load() を呼び出すべきかについて何か提案はありますか? それとも、ページ カウンターのより良い解決策でしょうか?