7

私のアプリケーションには、複数のキーを持つ複数のキャッシュ可能なメソッドがあります。

@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 とそれに続くワイルドカードに一致させます。しかし、私はこれを行う方法を本当に見つけることができませんでした。

私が達成しようとしていることは可能ですか?もしそうなら、どうすればいいですか?

4

2 に答える 2