2

Spring フレームワーク 3.2.4 を使用して Java プロジェクトを作成しています。

10 秒間キャッシュする必要がある SQL クエリが多数あります。

@cacheable注釈を使用すると、関数の結果をキャッシュできることを知っています。

私が理解していないのは、10 秒間だけキャッシュする方法です。キャッシュ可能な注釈に条件を追加できることは知っていますが、これらの条件にタイミングを追加する方法を理解するのは難しいです。

この問題に関する情報をいただければ幸いです。

4

2 に答える 2

3

スケジューラを使用して、キャッシュを削除するサービス メソッドを定期的に呼び出すことができます。

スケジューラ:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.beans.factory.annotation.Autowired;

public class Scheduler {

        @Autowired
        private SomeService someService;

        @Scheduled(fixedRate = 10000)
        public void evictCaches() {
                someService.evictCaches();
        }
}

サービス:

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class SomeService {

        @CacheEvict(value = { "cache1", "cache2" }, allEntries = true)
        public void evictAllCaches() {
        }
}
于 2015-06-11T07:01:47.063 に答える