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

@cacheable和@cacheput在相同方法上,条件相反

翟单弓
2023-03-14

是否可以在同一方法上使用@cacheput@cacheable

@CachePut(value ="cacheName", key = "#id", condition="#cachedData==false")
@Cacheable(value ="cacheName", key = "#id", condition="#cachedData==true")
public Foo doSomthing(String id, boolean cachedData){...}

共有1个答案

萧萧迟
2023-03-14

我认为您可以使用@caching对多个缓存注释进行分组,以实现自定义逻辑

可能是这样的:

@Caching(
            put= { @CachePut(value="cacheName", key="#id", condition="#cachedData==false") },
            cacheable = { @Cacheable(value ="cacheName", key="#id", condition="#cachedData==true") }
)
public Foo doSomething(String id, boolean cachedData){...}
 类似资料:
  • (Spring的@CachePut注释是否适用于void返回类型?) 我遇到了同样的问题 因为这个问题已经存在很长时间了,我不知道是否有解决办法 创建缓存: 使用@CachePut更新此缓存 输出: 我搜索了几天信息,但没有找到答案 除了使用@CacheEvict(cacheNames=userCache,allEntry=true) 有没有办法用@Cacheable和@CachePut解决? 非

  • 问题内容: 我在源代码下找到了以下文档 CachePut批注不会导致目标方法被跳过-而是总是导致该方法被调用并将其结果放入缓存中。 这是否意味着如果使用,updateCustomer方法将仅执行一次,结果将在缓存中更新。随后对updateCustomer的调用将不会执行updateCustomer,而只会更新缓存。 在的情况下,方法将在每次调用时执行,结果将在缓存中更新。 我的理解正确吗? 问题答

  • 我从Spring文档(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html#condition--)中读到,可以使用SpEL指定方法参数的条件。 我一直在尝试同样的方法,但失败了。以下是我的方法: 这是我的POJO: 但

  • 我正在从下面的方法中获取电影列表,并带有@Cacheable注释。由于它没有任何参数,我将key设置为#root.method.name。 现在,我想添加一个新的电影,同样应该添加到上述缓存。 我试过这个,但它给了我例外。 我们可以在这里使用@CachePut注释,还是有其他方法?

  • 在我的JavaSpringMVC应用程序中,我有一个返回用户的DAO。DAO经常被命中,所以我尝试缓存用户。 我是这样做的(如下),但我不知道我是否做对了。 我在想使得它只运行一次,并且所有其他时间的值都将从缓存中加载。 和上的和会在发生更新或删除时清除缓存。 那是正确的吗?如果是,什么时候使用合适?

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