Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 键作为可缓存注释参数的含义_Java_Spring_Caching_Spring Cache - Fatal编程技术网

Java 键作为可缓存注释参数的含义

Java 键作为可缓存注释参数的含义,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); } 如果我添加两个姓氏相同的人,那么缓存中只会保存一个,并且该方法有时会

我正在尝试使用Spring
@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链接即可),询问您的问题,然后立即回答。在这里询问,希望有人能为您查找文档并复制/粘贴文档,这只是表明缺乏研究。