当前位置: 首页 > 知识库问答 >
问题:

在单个方法上调用@cacheexit和@Cacheable注释?

上官修文
2023-03-14

我试图在一个方法上调用@CacheEvict和@Cacheable注释。

@CacheEvict(value = "tripDetailsDashboardCache", key = "#userId")
@Cacheable(value ="tripDetailsDashboardCache", key="#userId")
public  List<DashBoardObject> getAllDetailsForDashBoard(Integer userId){
    List<Master> masters = tripDetailsService.getTripDetailsForCaching(userId);
    List<DashBoardObject> dashBoardObject = tripDetailsService.getMasterDetailsForDashBoard(userId, masters);
    return dashBoardObject;
}

在调用@CacheEvict时,我想删除特定键的缓存数据,然后再次缓存方法响应的新鲜数据。但它没有缓存新鲜数据?。而且它也没有给出任何错误?。

共有3个答案

仲孙德惠
2023-03-14

看看文档。有@Caching注释,您可以在其中定义您的@Cacheable、@CachePut和@CacheEvict

王高邈
2023-03-14

@默认情况下,CacheExit在方法调用后运行。因此,上面的方法使用键#userId缓存列表,然后完全清除缓存。

它使代码不清楚,我建议创建单独的可缓存和缓存驱逐方法

齐高寒
2023-03-14

我想你想更新缓存,所以尝试使用@Cacheput,方法将在所有情况下执行,如果键是新的,新记录将被添加到缓存中,如果记录是旧的,旧值将被新值更新(刷新值)。

@CachePut(value = "tripDetailsDashboardCache", key = "#userId")
public  List<DashBoardObject> getAllDetailsForDashBoard(Integer userId){
    List<Master> masters = tripDetailsService.getTripDetailsForCaching(userId);
    List<DashBoardObject> dashBoardObject = tripDetailsService.getMasterDetailsForDashBoard(userId, masters);
    return dashBoardObject;
}
 类似资料:
  • 为什么spring对一个注释为@Cacheable的方法的一次调用执行我的定制@Cacheable密钥生成器两次,为什么不只执行一次。 我的KeyGenerator实现 我的方法用@Cacheable和自定义keyGenerator注释 spring Rest控制器,它调用用@cacheable注释的方法 当我用自定义的keyGenerator对用@Cacheable注释的方法进行一次调用时,我在

  • 当我从not bean类中的方法调用Cacheable方法时,我突然发现@Cacheable不起作用。 请在下面找到我的代码,并帮助我什么是问题或我错过的东西。

  • 问题内容: 从spring文档中: 如何指定使用和作为密钥? 问题答案: 如果没有另外指定,当前的Spring缓存实现将所有方法参数用作缓存键。如果要使用选定的键,请参考 Arjan的答案,该答案使用SpEL列表,这是创建唯一键的最简单方法。 从Spring文档 随着Spring 4.0的发布,默认的密钥生成策略发生了变化。Spring的早期版本使用密钥生成策略,该策略对于多个密钥参数仅考虑参数的

  • 它可能非常简单,但我想知道我是否可以在一个方法上调用@cacheable和@cacheevict,如下所示: 上面的代码是在每次调用方法时逐出empListCache,还是只在缓存已满时逐出? 多谢了。

  • 是否可以在同一方法上使用和?

  • 可能是问题似乎是重复的其他,但我已经检查了其他类似的问题,并尝试解决,但没有任何工作。 我正在使用缓存注释对服务类进行注释,如下所示: 我正在另一个服务类中自动生成CacheFacade。当我从那个类调用addRequest时,它可以工作,但当我调用getRequest时,它没有被调用,我尝试在那里添加日志和调试点,但流没有在那里。 这是我调用缓存服务类的主要服务类: 谁能告诉我,我做错了什么,为