当前位置: 首页 > 知识库问答 >
问题:

如何在spring可缓存密钥的方法中指定多个参数

鲁品
2023-03-14

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html#cache-annotations-cacheable-key上面的链接显示了当一个方法的所有参数都不需要缓存键时如何指定一个键,缓存键是默认的。但是如何在可缓存注释中指定多个param(但不是方法参数列表中的全部)作为缓存的键呢?

共有1个答案

伍耀
2023-03-14

您知道,@cacheable注释的key属性允许使用SpEL。在所有情况下,用于访问基础缓存的实际键必须“求值”为单个值。因此,您必须使用SpEL的功能组合形成(唯一)键的@cacheable方法参数。

举个例子,假设我们想要按作者、版本和书名找到一本书。例如,我们可能有一个@cacheable方法签名,如下所示...

@Cacheable(cacheNames = "Books", key="#author.name + #edition + #title")
Book findBook(Author author, Integer edition, String title, boolean checkWarehous, boolean includeUsed) {
 ...
}

如您所见,键是方法参数的组合和子集。

 类似资料:
  • 我正在使用Spring缓存框架和Redis。下面是我使用的缓存 我只是想创造一把我知道的钥匙。这会产生错误 因为当我不指定键为flows时。 这里出了什么问题。

  • 从spring文档中: 如何指定使用和作为键?

  • 我有一个Spring应用程序,它使用MyBatis进行持久化。我使用ehcache是因为速度对于这个应用程序很重要。我已经设置并配置了MyBatis和Ehcache。我使用一个名为“mybatis”的单一缓存,因为否则为每个实体创建单独的缓存将是荒谬的。 这是我的电子缓存。xml。 这是我的mybatis映射器界面的一个示例。 因为我有一个共享缓存,所以我需要一种方法使我的密钥对域对象是唯一的。作

  • 我试图在我的应用程序中创建一个文件的临时URL。我能够上传文件到S3桶,我能够使用方法

  • 我按照web上一些教程使用redis设置Spring缓存,

  • 问题内容: 我正在使用@cacheable注解缓存函数的结果。我有3个不同的缓存,每个缓存的关键是当前登录的用户的用户ID,该用户ID与方法中的参数连接在一起。在某个事件中,我想逐出所有具有以该特定用户ID开头的键的缓存条目。例如 : 我希望缓存逐出注释为: 但是当我尝试实现这一点时,它给了我一个错误: 什么是实现此目的的正确方法? 问题答案: 每个操作所有Spring Cache批注(即,等)都