31.1 支持的缓存提供商

缓存抽象不提供实际的存储,而是依赖于org.springframework.cache.Cacheorg.springframework.cache.CacheManager接口的实现。

如果你还没有定义一个CacheManager类型的bean,或一个名为cacheResolverCacheResolver(查看CachingConfigurer),Spring Boot将尝试以下提供商(按这个顺序):

  1. Generic

  2. JCache (JSR-107)(EhCache 3, Hazelcast, Infinispan, etc)

  3. Hazelcast

  4. Couchbase

  5. Redis

  6. Caffeine

  7. Simple

    提示 spring.cache.type属性可强制指定使用的缓存提供商,如果需要在一些环境(比如,测试)中禁用全部缓存也可以使用该属性。

    提示 使用spring-boot-starter-cache“Starter”来快速添加基础的缓存依赖。“Starter”带来了spring-context-support:如果你手动添加依赖,为了使用JCache、EhCache2.x或者Guava的支持,你必须添加spring-context-support

    如果CacheManager是Spring Boot自动配置的,你可以在它完全初始化前,通过实现CacheManagerCustomizer接口进一步配置,以下设置标志表明空值应当传递给底层映射:

    @Bean
    public CacheManagerCustomizer<ConcurrentMapCacheManager> cacheManagerCustomizer() {
    return new CacheManagerCustomizer<ConcurrentMapCacheManager>() {
    @Override
    public void customize(ConcurrentMapCacheManager cacheManager) {
    cacheManager.setAllowNullValues(false);
    }
    };
    }

    在以上示例中,希望得到一个自动配置好的ConcurrentMapCacheManager。如果没有配置(要么你提供你自己的配置,要么一个不同的缓存提供商被自动配置),则自定义器(customizer)将不会被调用。自定义器你添加多少都可以,并可以使用@OrderOrdered对它们进行排序。