【发布时间】:2016-08-12 23:19:27
【问题描述】:
假设我有 2 个不同的 bean 方法,我想通过 EhCache 进行缓存:
@Component
public class StatService {
@Cacheable(value = "statCalc")
public int getMeth1(int param) {
// LOGIC1
}
@Cacheable(value = "statCalc")
public int getMeth2(int param) {
// LOGIC2
}
}
我想将它们驻留在同一个缓存中 - ehcache.xml:
<cache name="statCalc"
...
/>
问题是缓存键是由输入参数而不是方法签名生成的,因此getMeth2(1)可以返回getMeth1(1)缓存的值。
使用方法名称构建密钥的最简单方法是什么?
附:请不要提及对不同方法使用相同的缓存可能是错误的事实,只是帮助解决这个问题。
【问题讨论】:
-
密钥是如何生成的?
-
@RomanC 默认使用所有输入参数的密钥生成器。
标签: java spring caching ehcache spring-cache