我在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"。
参见getKeys
的Javadoc
返回缓存中所有元素的列表,无论这些元素是否过期。
这实际上是在返回元素,而不是id。您可能需要更改代码,将o
强制转换为Element
,然后输出getObjectKey()
。
不需要指定key
属性。由于您想要的是使用方法的单个参数(name
),因此缓存抽象将默认使用该参数。