【发布时间】:2020-06-20 08:43:08
【问题描述】:
我正在开发一个 Spring Boot 应用程序,我有一个场景可以将 @CachePut 和 @CacheEvict 放在同一个方法上。
我用下面给出的代码尝试了这个场景:
@CachePut(value="myValue",key="#entity.getId(),#entity.getOrgId()",
cacheManager="no-expire-caching")
@CacheEvict(value="myValue", key="#entity.getId(),#entity.getOrgId()",
cacheManager="no-expire-caching", condition="#entity.isDeleted() == true")
public MyEntity save(boolean flag, MyEntity entity){
if (flag==true){
entity.setIsDeleted(true);
return myRepo.save(entity);
}
return myRepo.save(entity);
}
但这似乎没有按预期工作。
目标:
-
我希望
@CachePut注释始终首先执行,因为这将是更新缓存的第一个验证。 -
只要满足条件,就会执行
@CacheEvict(即isDeleted字段设置为true) -
如果
isDeleted设置为true,我不希望更新我的缓存或添加新条目。
是否有可能在 Spring 中实现这一点?我应该如何修改我的代码?
【问题讨论】:
-
CachePut 也可以使用条件。
标签: java spring spring-boot spring-cache