我正在尝试使用Spring @Cacheable
注释。
让我们看看:
@Cacheable(value = "employee", key = "#surname")
public Person findEmployeeBySurname(String firstName, String surname, int age) {
return new Person(firstName, surname, age);
}
我是否正确,如果我添加2个姓氏相同的人,那么只有一个人会被保存在缓存中,并且该方法有时会返回错误的结果?
我应该何时指定此参数?
如果我没有明确指定它,spring如何创建密钥(据我所知,当我使用CasheEvict和CashPut注释时我应该知道它)?
答案 0 :(得分:0)
JB Nizet是对的,显然是他链接到的文档!
35.3.1 @Cacheable annotation ...
默认密钥生成
由于缓存本质上是键值存储,因此每次调用一个 需要将缓存的方法转换为适合缓存的密钥 访问。开箱即用,缓存抽象使用简单 KeyGenerator基于以下算法:
If no params are given, return SimpleKey.EMPTY. If only one param is given, return that instance. If more the one param is given, return a SimpleKey containing all parameters.
这是三个案例中的最后一个对你的mehtods来说是重要的,没有缓存参数