Spring 3.1で@Cacheableを使用しています。Cacheable の値とキーのマッピング パラメータについて少し混乱しました。これが私がやっていることです:
@Cacheable(value = "message", key = "#zoneMastNo")
public List<Option> getAreaNameOptionList(String local, Long zoneMastNo) {
//..code to fetch data form database..
return list;
}
@Cacheable(value = "message", key = "#areaMastNo")
public List<Option> getLocalityNameOptionList(String local, Long areaMastNo) {
//..code to fetch data form database..
return list;
}
ここで何が起こっているのか、2 番目のメソッドは最初のメソッドの選択された値に依存しますが、問題は、zoneMastNo = 1 と areaMastNo = 1を渡すと、2 番目のメソッドが最初のメソッドの結果を返すと仮定します。実際、私は多くのサービスを持っているため、特定のユースケースでキャッシュ可能な共通の値を使用しようとしています。今私の質問は次のとおりです。
- この問題を解決するにはどうすればよいですか?
- すべてのサービスにキャッシュ可能を使用するのは良い考えですか?
- 指定された時間が経過すると、 @CacheEvict を使用せずにキャッシュがメモリから完全に削除されますか?