使用安静的 api 调用,例如
myserver/api/mydata?req?%7Bcode%3A%2244%22%2C%20name%3A%22sally%22%2C%20version%3A7%7D
其中传入的参数是 code=44、name=sally 和 version=7,我想只使用名称和版本作为键来缓存响应——而不是代码。
我想做的是:
@Cacheable(value="myCache", key="#name.concat(#version)")
def mydata() {
.....
}
但是#name 和#version 都解析为null。显然,该格式仅适用于方法参数,而不适用于 params.name 或 params.version。
如果我将键保留为默认值,缓存将使用所有三个参数作为键(如果我更改一个,则不使用缓存)。这会很好,除非我希望使用缓存而不考虑“代码”并基于“名称”和“版本”作为键。
我的猜测是我需要覆盖默认的 KeyGenerator,但我尝试过但失败了。关于如何做到这一点的任何建议?
或者有没有办法使用 @Cacheable 注释访问参数属性?