扩展spring之ext-spring-cache

笔者语录 这几天失眠了,有点焦虑了。


  spring cache提供了基于注解的操作支持,非常方便,但是不够灵活,使用起来不太如意,这就是笔者决定对其进行扩展的出发点。


spring-cache核心流程(简述)

  要扩展spring-cache,首先就得先了解一下spring-cache的流程,下面这张图描述了spring-cache的最核心的流程。
扩展spring之ext-spring-cache


ext-spring-cache实现的扩展点(简单演示)

扩展spring之ext-spring-cache

  1. 支持一级缓存Redis,使用指定的RedisTemplate操作该缓存。
  2. 支持一级缓存Redis, 针对最终缓存的key设置过期时间(,而不是针对命名空间设置)。
  3. 支持一级缓存Redis,可选的过期策略。AUTO-若配置文件中配置有过期时间,则使用配置的过期时间,否者使用指定的过期时间; CUSTOM-使用指定的过期时间。
  4. 支持一级缓存Caffeine,指定初始化容量、指定过期策略、指定过期时间。
  5. 支持一级缓存Caffeine,指定最大数量淘汰或指定最大比重淘汰、支持指定比重器。
  6. 支持一级缓存Caffeine,支持指定缓存加载器、支持指定刷新时间间隔。
  7. 支持一级缓存Caffeine,支持键或值的对象对象引用类型。
  8. 支持一级缓存Caffeine,支持指定是否开启(命中率等)统计。
  9. 支持redis和caffeine并存,支持设置它们谁作为一级缓存、谁作为二级缓存(默认caffeine作为一级缓存、redis作为二级缓存)。
  10. 支持redis和caffeine形成多级缓存时,主动控制(当一级缓存没有数据、而二级缓存有数据时)是否回填(数据至一级缓存)数据(默认回填)。
  11. 支持指定初始化时,是否对spring-context进行响应(默认响应)。
  12. 支持@ExtCacheable与@Cacheable注解并存,@ExtCacheable默认走ExtCacheManager, @Cacheable默认走原CacheManager。

ext-spring-cache相关代码说明

提示 具体代码见文末github链接。
扩展spring之ext-spring-cache




^_^ 如有不当之处,欢迎指正

^_^ 测试代码托管链接
         https://github.com/JustryDeng…ext-spring-cache

^_^ 本文已经被收录进《Spring源码梳理&实战》,笔者JustryDeng