在我的应用程序中,我有多个具有多个键的可缓存方法:
@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}")
现在我想要一个 cachevict 方法,它清除只有#projectId 键(一个 UUID)匹配的所有缓存:
@CacheEvict(value = {"valueCodes", "fieldCodes", "qi"; "fieldCodes"}, key = "#projectId")
我在这篇文章中读到这是不可能的,而且
只有 evict 注释的键正则表达式匹配每个 cacheNames 中的多个元素
我不太确定他们的意思,但我想这与在SpEL中使用正则表达式有关。
所以我开始考虑将我的键连接成一个键:
@Cacheable(cacheNames="cahceName", key="concat(#projectId).concat(#otherKey)")
并使用正则表达式将所有键与 projectId 后跟通配符匹配。但我真的找不到办法做到这一点。
我想要完成的事情可能吗?如果是这样,我该怎么做?