gpt4 book ai didi

Grails 缓存插件 : Cacheable key using only two of three params

转载 作者:行者123 更新时间:2023-12-02 02:03:16 24 4
gpt4 key购买 nike

使用 restful api 调用,例如

myserver/api/mydata?req?%7Bcode%3A%2244%22%2C%20name%3A%22sally%22%2C%20version%3A7%7D

传入的参数是代码=44、名称=sally 和版本=7,我想只使用名称和版本作为键来缓存响应——而不是代码。

我想做的是:

 @Cacheable(value="myCache", key="#name.concat(#version)")
def mydata() {

.....

}

但是#name 和#version 都解析为空。显然,该格式仅适用于方法参数,不适用于 params.name 或 params.version。

如果我将键保留为默认值,缓存将使用所有三个参数作为键(如果我更改其中一个,则不会使用缓存)。那会很棒,除非我希望无论“代码”如何都使用缓存,并且基于“名称”和“版本”作为键。

我的猜测是我需要覆盖默认的 KeyGenerator,但我已经尝试过但失败了。有关如何执行此操作的任何建议?

或者有没有办法使用@Cacheable 注释访问参数属性?

最佳答案

菲尔,最简单的解决方案是将名称和版本定义为 Controller 操作的参数:

@Cacheable(value="myCache", key="#name.concat(#version)")
def mydata(String name, String version) {
}

如果不总是提供名称和版本参数,只需在方法签名中添加一个默认值即可:

@Cacheable(value="myCache", key="#name.concat(#version)")
def mydata(String name = null, String version = 0) {
}

关于Grails 缓存插件 : Cacheable key using only two of three params,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com