【问题标题】:Ehcache with Spring Cache assigns wrong key带有 Spring Cache 的 Ehcache 分配了错误的键
【发布时间】:2016-11-29 13:55:07
【问题描述】:

我在 UserService 中有一个方法:

@Cacheable(value="user", key="#p0")
public User find(String name) {
    return userRepository.findOneByName(name);
}

它会缓存。但后来我尝试从“用户”缓存中获取所有密钥:

CacheManager cacheManager = CacheManager.getInstance();
cacheManager.getCache("user").getKeys().forEach(o -> log.debug(o.toString()));

输出:

com.cache.domain.User#1

例如,“John Doe”。

【问题讨论】:

  • 你试过@Cacheable(value="user", key="#name") 吗?
  • 是的。它给出了相同的结果。

标签: spring caching ehcache spring-cache


【解决方案1】:

查看getKeys的Javadoc

返回缓存中所有元素的列表,无论它们是否过期。

这实际上是返回元素,而不是 id。您可能需要更改代码以将 o 转换为 Element 并输出 getObjectKey()

您不需要指定key 属性。由于您想要的是使用方法的单个参数 (name),因此缓存抽象将默认使用该参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2012-08-07
    • 2019-10-03
    • 1970-01-01
    相关资源
    最近更新 更多