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

调用@cacheevict和@cacheable spring

慕容雅珺
2023-03-14

它可能非常简单,但我想知道我是否可以在一个方法上调用@cacheable和@cacheevict,如下所示:

@Cacheable(value = "empListCache")
@CacheEvict(value = "empListCache", allEntries = true)
public List<Emply> findAllEmplys() throws SomeException

上面的代码是在每次调用方法时逐出empListCache,还是只在缓存已满时逐出?

多谢了。

共有1个答案

徐洋
2023-03-14

你到底想干什么?是的,您可以这样做,但这基本上完全违背了缓存的目的。

@cacheevict默认情况下在方法调用之后运行。所以上面的声明的目的是用一个相同的键缓存列表(因为您的方法没有参数),然后完全清除缓存。

长话短说:如果删除这两个注释,则得到完全相同的结果(除了缓存“EmptyListCache”未被清除)。

 类似资料:
  • 我开发了一个使用注释方法。代码为: 现在,我想在一些事件之后驱逐这个缓存: 一些与manager相关的报表已更新(添加或删除)。 之后,应该驱逐与管理器相关的缓存,这样,应用程序将获得新的数据,而不是使用该缓存中的现有数据。我为此开发了以下方法: 我调用inside方法,该方法更新Manager与其报表的关系。然而,这一个工作断断续续,我不确定这是不是正确的方式驱逐缓存。此外,缓存使用作为key的

  • 简而言之,当在方法上调用@CacheEvict并且没有找到条目的键时,Gemfire会抛出EntryNotFoundException。 现在详细介绍一下, 我有课 我有两个缓存区域,定义为个人区域和个人部门区域,服务如下 当调用updatePerson时,如果personByDeptRegion中没有条目,则会抛出一个异常,即键1的EntryNotFoundException(或dept代码)。

  • 我想在我的存储库中的save/saveAll方法中添加一个装饰器。 我试图通过阅读此线程使用自定义实现来覆盖方法,但我不想重写方法实现,只需调用具有更多行为的默认方法。提供的解决方案都不适合我的情况,或者需要太多的自定义。 我可以从方法体中手动调用缓存逐出,但我不能只覆盖方法并调用super。save(),因为我只使用接口,让Spring生成实现。 有什么建议吗?

  • 问题内容: 我已经在互联网上的一些博客文章中阅读了相关信息,并在自己的应用中实施了缓解CSRF攻击的措施。这些帖子尤其是我实施的驱动力 来自ASP.NET和Web工具开发人员内容团队的ASP.NET MVC最佳实践 Phil Haack博客的跨站点请求伪造攻击剖析 ASP.NET MVC框架中的AntiForgeryToken- David Hayden博客的Html.AntiForgeryTok

  • 问题内容: 好的,我花了一段时间解决这个问题,这是我收集到的: 如果在IE7中调用AJAX,并且指定了window.onbeforeunload函数,则它将调用onbeforeunload函数。 如果尝试使用window.open打开一个新窗口而又不打扰当前窗口,则会调用onbeforeunload。 有人知道如何制止吗?我什至尝试将变量设置为TRUE,并在onbeforeunload函数中检查该

  • 本文向大家介绍浅析javascript的间隔调用和延时调用,包括了浅析javascript的间隔调用和延时调用的使用技巧和注意事项,需要的朋友参考一下 用 setInterval方法可以以指定的间隔实现循环调用函数,直到clearInterval方法取消循环 用clearInterval方法取消循环时,必须将setInterval方法的调用赋值给一个变量,然后clearInterval方法引用该变