Java 键作为可缓存注释参数的含义
我正在尝试使用SpringJava 键作为可缓存注释参数的含义,java,spring,caching,spring-cache,Java,Spring,Caching,Spring Cache,我正在尝试使用Spring@Cacheable注释 让我们看看: @Cacheable(value = "employee", key = "#surname") public Person findEmployeeBySurname(String firstName, String surname, int age) { return new Person(firstName, surname, age); } 如果我添加两个姓氏相同的人,那么缓存中只会保存一个,并且该方法有时会
@Cacheable
注释
让我们看看:
@Cacheable(value = "employee", key = "#surname")
public Person findEmployeeBySurname(String firstName, String surname, int age) {
return new Person(firstName, surname, age);
}
如果我添加两个姓氏相同的人,那么缓存中只会保存一个,并且该方法有时会返回不正确的结果,这对吗
我应该何时指定此参数
如果我没有明确指定,spring如何创建密钥(据我所知,当我使用CasheEvict和CashPut注释时,我应该知道它)JB Nizet是正确的,它清楚地出现在他链接到的文档中 默认密钥生成 由于缓存本质上是键值存储,因此每次调用 需要将缓存的方法转换为适合缓存的密钥 通道开箱即用,缓存抽象使用一个简单的 基于以下算法的密钥生成器:
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.
这是对您的方法很重要的三个案例中的最后一个,没有缓存参数文档中已经解释过了:@JB Nizet有多少关于spring框架的问题没有被参考文档涵盖?我还没有计算任何统计数据。你的观点是什么?@JB我的观点是,文档几乎总是涵盖所有这样的问题。尽管如此,它还是有更广泛的听众,因为在这里可以更快地找到具体答案。然后在文档中搜索您的答案(只需打开它,点击Ctrl-F,键入Cacheable,然后单击TOC链接即可),询问您的问题,然后立即回答。在这里询问,希望有人能为您查找文档并复制/粘贴文档,这只是表明缺乏研究。