【发布时间】:2021-01-28 13:56:36
【问题描述】:
我遇到了一个奇怪的情况,我的 @CacheEvict 不起作用。代码如下所示:
@Caching(evict = {
@CacheEvict(value = CacheConsts.C_CACHE1, keyGenerator = CacheConsts.KG_CACHE1, condition="#someModel != null && #someModel.getSomeProperty() != null"),
@CacheEvict(value = CacheConsts.C_CACHE2, keyGenerator = CacheConsts.KG_CACHE2, condition="#someModel != null && #someModel.getSomeProperty() != null"),
@CacheEvict(value = CacheConsts.C_CACHE3, keyGenerator = CacheConsts.KG_CACHE3, condition="#someModel != null && #someModel.getSomeProperty() != null")
})
public boolean addModel(ModelDTO someModel, String tenant);
但是,当我删除条件时它会起作用!!!即使我测试的所有数据都是非空的。
例如:当我删除这个:“#someModel != null && #someModel.getSomeProperty() != null”时,它可以工作。
我正在使用不为空的 ModelDTO 进行测试,并且“someProperty”也不为空。
在我看来,条件会过去,它会驱逐......但事实并非如此。
有什么想法吗?
我的法术是否正确形成?
为什么我的缓存不会在这里驱逐?
这是否与 @Caching 注释或我不知道的 CacheEvict 条件的某些行为有关?
感谢任何帮助或想法的人。
【问题讨论】:
标签: java spring spring-cache