问题描述
标题可能看起来很奇怪,但这就是问题所在。
我在 Spring Boot 应用程序上使用 ehcache。我有一个看起来像这样的函数:
public Result foo(double value,String id){
...
...
return convertValuetoResult(value,id);
}
现在我需要的是这个场景:我想缓存这个函数,这样如果我收到具有相同值的相同 id(字面上相同的参数),我想从缓存中返回结果而不再次执行该函数.
但是,如果我得到具有不同值的相同 id,我想重新执行该函数,计算答案,将其缓存并删除先前缓存的数据。
如何使用@Cacheable、@CachePut 或@Cacheevict 注释来实现这一点?非常感谢任何帮助。
解决方法
将缓存视为地图。如果使用相同的键执行 put 操作,它将覆盖该值。
在你上面的代码中,你必须使用@Cacheable(key="#id")