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

Spring@Cacheable缓存名称能否作为参数传递?

赵立果
2023-03-14

我想缓存以下结构的方法:

public Object foo(String id, String type) {
  return bar;
}

对于@Cacheable(value=“…”,key=“#……”) 需要添加到方法顶部的注释,我想使用id作为键,并根据类型的值选择缓存名称。仅仅传递它@Cacheable(value=type,key=“#id”)不起作用,因为该值需要是一个常量。目前,我已经为每种类型创建了一个helper方法,并用@Cachable注释了这些方法,但是当类型的可能值发生变化时,这种方法的伸缩性不是很好,因此我正在寻找更通用的方法。


共有1个答案

锺离德庸
2023-03-14

你可以阅读文档。非常详细。

 类似资料:
  • 问题内容: 我正在尝试进行设置,以便将表名作为参数传递给命令文本,但是我无法使其正常工作。我四处张望,发现了这样的问题:使用C#进行MySQL的参数化查询,但是我没有任何运气。 这是相关的代码(connection == 包含连接字符串): 如果我更改: 至: 作为一种测试方法,它是可行的(我正在将XML从数据集中写入控制台以进行检查)。因此,我很确定问题只是以错误的方式使用了参数功能。有指针吗?

  • 我正在使用spring,我想在启动我的应用程序之前缓存一些数据。 我在其他帖子中找到了一些使用@PostConstruct来调用我的@Service方法的解决方案(这些方法被注释为@Cacheable),例如。如何在spring启动时加载@Cache?我这样做了,但当应用程序启动后,我调用RESTendpoint,它再次调用这个服务方法,它会在另一次发送数据库请求(所以它还没有缓存)。当我第二次向

  • 问题内容: 我正在使用一个存储过程,在其中发送数据库中其类型为的存储过程,并且还声明parameter 。 当我将列名传递为float时,它给出了错误: 消息8114,将数据类型nvarchar转换为float时出错。 这是我的测试查询 当我将参数类型更改为时,它给了我这个错误: 消息8117,操作数数据类型varchar对avg运算符无效。 我该如何解决? 更新 : 这是我的存储过程: 问题答案

  • 目前,我正在使用Spring缓存和/注释。 我想得到某种控制台日志语句,如

  • 我正在使用SpringFramework 3.2编写一个java项目。4. 我有许多SQL查询需要缓存10秒钟。 我知道用注释我可以缓存函数结果。 我不明白的是如何缓存只有10秒。我知道你可以给可缓存注释添加条件,但是我很难弄清楚如何给这些条件添加时间。 如能提供有关该问题的任何信息,将不胜感激。