Я работаю над приложением 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
.
Можно ли этого добиться весной? Как мне изменить свой код?