首页 文章

密钥的含义作为Cacheable注释的参数

提问于
浏览
0

我正在尝试使用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注释时我应该知道它)?

1 回答

  • 0

    JB Nizet是对的,显然在他链接的文档中!

    35.3.1 @Cacheable注释...默认密钥生成由于缓存本质上是键值存储,因此需要将缓存方法的每次调用转换为适合缓存访问的密钥 . 开箱即用,缓存抽象使用基于以下算法的简单KeyGenerator:如果没有给出params,则返回SimpleKey.EMPTY .
    如果只给出一个参数,则返回该实例 .
    如果给出了更多的参数,则返回包含所有参数的SimpleKey .

    这是三个案例中的最后一个对你的mehtods来说是重要的,没有缓存参数

相关问题