假设我有两个不同的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)缓存的值。
最简单的方法是使用方法名来构建键。
附注:请不要提到使用相同的缓存用于不同的方法可能是错误的事实,只是帮助解决这个问题。