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());}
相關文章
相關標籤/搜索