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