-
特性
- 1.通过少量的配置 annotation 注解即可使得既有代码支持缓存
- 2.支持开箱即用 Out-Of-The-Box,即不用安装和部署额外第三方组件即可使用缓存
- 3.支持 Spring Express Language,能使用对象的任何属性或者方法来定义缓存的 key 和 condition
- 4.支持 AspectJ,并通过其实现任何方法的缓存支持 (默认基于AOP方案,采用AspectJ会更灵活)
- 5.支持自定义 key 和自定义缓存管理者,具有相当的灵活性和扩展性
- 6.支持各种缓存实现,默认是基于ConcurrentMap实现的ConcurrentMapCache,同时支持ehcache实现。若要使用Redis等缓存,引入redis的实现包即可。
-
缺憾
- 1.不支持TTL,也就是不能设置expires time。这点挺遗憾的,spring-cache认为这是各个cache实现自己去完成的事情,有方案但是只能设置统一的过期时间,这明显不够灵活。比如用户的抽奖次数、有效期等业务,当天有效,或者3天、一周有效,我们倾向于设置缓存有效期解决这个问题,而spring-cache却无法完成。
- 2.无法根据查询结果中的内容生成缓存key,比如getUser(uid)方法,想通过查询出来的user.email生成缓存key就无法实现了。
- 3.调试起来麻烦