我开发了一个使用@cacheable
注释方法。代码为:
@Cacheable(value="reporties" , key="{#root.methodName,#manager.name}")
public List<Employee> getReportiesForManager(Employee manager){
// code to fetch reporties its a Spring JDBC call
}
现在,我想在一些事件之后驱逐这个缓存:
之后,应该驱逐与管理器相关的缓存,这样,应用程序将获得新的数据,而不是使用该缓存中的现有数据。我为此开发了以下方法:
@CacheEvict(value="reporties",key="{#name}")
public void evictReportiesCache(String name){}
我调用inside方法,该方法更新Manager与其报表的关系。然而,这一个工作断断续续,我不确定这是不是正确的方式驱逐缓存。此外,缓存使用#root.methodName
作为key的一部分。
有人能帮我搬走缓存吗?
如果cacheable
和cacheevict
批注标识相同的数据,则传递给它们的键必须相同。
如果您希望通过管理器的名称来逐出报表缓存,则需要同时根据管理器的名称进行缓存和逐出。
您可以将缓存视为映射
。
每次调用带有@cacheable
注释的方法时,都要在映射
中写入一个与定义为它们键的内容相关联的值。
每次调用带有@cacheevict
注释的方法时,都要删除与键关联的值。您还可以删除映射中的所有条目。
它可能非常简单,但我想知道我是否可以在一个方法上调用@cacheable和@cacheevict,如下所示: 上面的代码是在每次调用方法时逐出empListCache,还是只在缓存已满时逐出? 多谢了。
我正在尝试替换旧的: 由此: 因为我想使用高级缓存功能,比如不缓存空值等等。 为此,我遵循了Spring教程https://spring.io/guides/gs/caching/ 如果我没有为我的应用程序添加注释。在java中,缓存根本不起作用。 但是如果我添加EnableCaching和CacheManager bean: 我在启动时收到以下错误: Java语言lang.IllegalStat
我有一个服务与下一个方法: 我从控制器中调用getTestWithId100方法,但它只获得新值。 部分ehcache.xml: 为什么它不工作?我尝试了不同的键,但没有成功。
我正在从下面的方法中获取电影列表,并带有@Cacheable注释。由于它没有任何参数,我将key设置为#root.method.name。 现在,我想添加一个新的电影,同样应该添加到上述缓存。 我试过这个,但它给了我例外。 我们可以在这里使用@CachePut注释,还是有其他方法?
我有一个用并尝试使用注释。该方法还用注释。将忽略注释。是否可以在Mapstruct方法上使用?
问题内容: 我在源代码下找到了以下文档 CachePut批注不会导致目标方法被跳过-而是总是导致该方法被调用并将其结果放入缓存中。 这是否意味着如果使用,updateCustomer方法将仅执行一次,结果将在缓存中更新。随后对updateCustomer的调用将不会执行updateCustomer,而只会更新缓存。 在的情况下,方法将在每次调用时执行,结果将在缓存中更新。 我的理解正确吗? 问题答