我使用Spring缓存实现缓存一些对象,下划线缓存是EhCache。我试图基于通配符搜索键来驱逐缓存,原因是我存储它们的方式,我只知道部分键。因此我想做类似下面的事情。我在这个论坛上搜索了相关的答案,但没有找到任何答案。
@CacheEvict(beforeInvocation=true, key="userId+%")
public User getUser(String userId)
{
//some implementation
}
现在,如果我尝试这个,我会收到SPEL的错误。此外,我尝试为此创建一个自定义密钥生成器,如果密钥生成器返回一个密钥,这里驱逐工作,但我有几个密钥基于我的搜索。
@CacheEvict(beforeInvocation=true, keyGenerator="cacheKeyEvictor")
public User getUser(String userId)
{
//some implementation
}
//Custom key generator for eviction
public class cacheKeyEvictor implements KeyGenerator {
@Override
public Object generate(Object arg0, Method arg1, Object... arg2) {
//loop the cache and do a like search and return the keys
return object; //works if I send one key. Won't work for a list of keys
}
}
对此有任何帮助表示赞赏。