我有三种方法:
@可缓存getcompany(long id);
@可缓存getcompany(字符串代码);
@可缓存getcompanies();
它们使用的是来自ehcache的同一个缓存,当我调用first getcompanies()时(所有公司都加载到缓存中),下一次我调用getcompany by id时,这个方法不是从缓存返回company对象,而是直接从db返回company对象(也把对象放到缓存中,但是使用不同的键-所以我们现在在一个缓存中有两个相同的对象)。如何实现自定义密钥生成器以强制所有方法从缓存中放入/读取?
1条答案
按热度按时间zlwx9yxi1#
超载
getCompany()
:缓存是按键查找。因为有两个方法具有不同的键类型,所以缓存没有其他键类型的Map。您可以使用双缓存,即使用两个键将每个公司放入缓存两次。Spring提供了更普遍的
@Caching
更复杂规则的注解: