【发布时间】:2015-04-15 11:40:38
【问题描述】:
@CachePut or @Cacheable(value = "CustomerCache", key = "#id")
public Customer updateCustomer(Customer customer) {
sysout("i am inside updateCustomer");
....
return customer;
}
我在CachePut源代码下找到了以下文档
CachePut 注解不会导致目标方法被跳过—— 相反,它总是导致方法被调用,其结果是 放入缓存中。
这是否意味着如果我使用 @Cacheable , updateCustomer 方法将只执行一次,结果将在缓存中更新。后续调用
updateCustomer 不会执行 updateCustomer ,它只会更新缓存。
而在@CachePut 的情况下,updateCustomer 方法将在每次调用时执行,结果将在缓存中更新。
我的理解正确吗?
【问题讨论】:
-
如果缓存阻止调用昂贵的函数超出需要,为什么使用 @CachePut 来 - 再次 - 使函数每次都被执行?