私のアプリケーションには、複数のキーを持つ複数のキャッシュ可能なメソッドがあります。
@Cacheable(cacheNames = "valueCodes", key = "{#value, #fieldId, #projectId}")
@Cacheable(cacheNames = "fieldNames", key = "{#field, #value, #projectId}")
@Cacheable(cacheNames = "qi", key = "{#langCode, #question, #projectId}")
@Cacheable(cacheNames = "fieldCodes", key = "{#name, #projectId}")
ここで、UUID である #projectId キーのみが一致するすべてのキャッシュをクリアする cachevict メソッドが必要です。
@CacheEvict(value = {"valueCodes", "fieldCodes", "qi"; "fieldCodes"}, key = "#projectId")
この記事で、これは不可能であり、
各 cacheNames の複数の要素に一致する evict アノテーションのキー正規表現のみ
それが何を意味するのかはよくわかりませんが、SpELで正規表現を使用することに関係があると思います。
そこで、キーを 1 つのキーに連結することを考え始めました。
@Cacheable(cacheNames="cahceName", key="concat(#projectId).concat(#otherKey)")
正規表現を使用してすべてのキーを projectId とそれに続くワイルドカードに一致させます。しかし、私はこれを行う方法を本当に見つけることができませんでした。
私が達成しようとしていることは可能ですか?もしそうなら、どうすればいいですか?