Springboot的默认缓存注解用起来很方便,但是也有一些设置方面的问题
这个 @Cacheable 注解,默认会缓存null 值的,这个行为不是我的期望行为,可以通过设置避免此问题:
@Cacheable(value = "unitCache", key = "#unitId", unless="#result == null")
另外,这个cache默认是永久存储的,即使重启Eclipse也能读取缓存的值;如果测试的时候,需要手工清除:
@CacheEvict(value = "unitCache", key = "#unitId")
最后,如果需要清除所有的缓存值的话,需要增加注解:
@CacheEvict(value = "unitCache", key = "#unitId", allEntries = true)
并且注意这个 allEntries = true 的注解上 直接加 @PreDestroy 注解是无效的,需要在其他的bean里面的方法加上,调用这个加了 @CacheEvict(xxx, allEntries = true) 的方法才有效
@PreDestroy
本文介绍了Springboot中使用@Cacheable注解进行缓存操作时遇到的问题,包括如何避免缓存null值、设置缓存过期以及手动清除缓存的方法。同时,讲解了@CacheEvict注解用于清除缓存的细节,特别是清除所有缓存的注意事项。通过实例展示了如何优化和控制缓存行为。
682

被折叠的 条评论
为什么被折叠?



