spring 的缓存抽象

spring定义了本身缓存抽象用于统一缓存的操做,只要实现这套接口,就能够接入spring经过注解的方式使用缓存(一些主流的缓存都提供该抽象的实现)redis

缓存抽象主要定义了如下两个接口spring

  Cache        缓存

    缓存接口,定义缓存操做spa

  CacheManager代理

    缓存管理器,管理缓存组件对象

注解的方式使用缓存:spring提供了一种经过注解标记方法从而对方法的返回结果进行缓存的方式使用缓存接口

  @Cacheableget

    标记方法,对方法返回结果进行缓存,能够指定key值,缓存条件。it

  @CacheEvictio

    清空缓存

  @CachePut

    用于更新缓存,通常用于更新或者新增方法,将最数据存刷到缓存中。

  @EnabheCaching

    开启基于注解的缓存,标记主方法

大体原理:代理;对标记了上述注解的方法的对象进行代理,从而根据各类注解添加相应的缓存功能。

自动配置原理:

1.添加选择器,经过CacheAutoConfiguration添加缓存配置类容器中,spring boot 默认提供了如下10个缓存配置类,每一个配置类都会被执行,知足条件的配置类会匹配成功,添加到容器中,缓存配置类主要为容器添加各自的CacheManager组件,用于建立缓存组件,完成spring 封装的缓存操做。

  org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration

  org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration

  org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration

  org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration

  org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration

  org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration

  org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration

  org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration

  org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration

  org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration

2.缓存自动配置,XxxAutoConfiguration,添加缓存功能组件到容器中,

缓存提供的灵活性(扩展功能)

keyGenarator

  缓存数据时,key的生成策略

serialize

  缓存数据时value序列化策略,添加序列化器到自定义配置类中,并添加自定义配置类替换默认配置类(RedisCacheConfiguration)。

@Beanpublic RedisCacheConfiguration redisCacheConfiguration(){    Jackson2JsonRedisSerializer<UserVo> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<UserVo>(UserVo.class);    return RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(RedisSerializationContext.fromSerializer(jackson2JsonRedisSerializer).getValueSerializationPair());}
相关文章
相关标签/搜索