概述

Spring定义了org.springframework.cache.CacheManager和org.springframework.cache.Cache接口来统一不同的缓存技术。其中,CacheManager是Spring提供的各种缓存技术抽象接口,Cache接口包含缓存的各种操作。

CacheManager接口

Spring提供了不同的CacheManager实现来使用不同的技术:SimpleCacheManager使用简单的Collection来存储缓存,用于测试;ConcurrentMapCacheManager使用ConcurrentMap来存储缓存;RedisCacheManager使用redis作为缓存技术。

Spring需要使用@EnableCaching来开启对缓存的使用,并通过对应的对象去创建Bean。

    @Bean
    public ConcurrentMapCacheManager cacheManager() {
        return new ConcurrentMapCacheManager();
    }

而Spring boot中已经自动配置了CacheManger,默认用SimpleCacheConfiguration配置,使用的是ConcurrentMapCacheManager,可以用spring.cache为前缀的属性来改变缓存默认配置。也需要在配置类中使用@EnableCaching开启对缓存的支持。

声明式缓存注解

注解|解释 –|– @Cacheable|在方法执行前,Spring先检查缓存中是否有数据,如果有则返回缓存中的数据,否则调用方法并将方法返回值放入缓存。 @CachePut|无论怎样,都把方法返回值放入缓存,可用于save方法。 @CacheEvict|将一条或者多条数据从缓存中删除,可用于delete方法。 @Cacheing|可以通过@Cacheing注解组合多个注解策略在一个方法上。