Spring缓存支持

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/83216540

一 点睛

Spring定义了CacheManager和Cache接口用来统一不同的缓存的技术。

CacheManager:Spring提供的各种缓存技术抽象接口。

Cache:包含缓存的各种操作(增加、删除、获得缓存)。

二 Spring支持的CacheManager

针对不同的缓存技术,需要实现不同的CacheManager,Spring定义的CacheManager实现如下:

  • SimpleCacheManager:使用简单的Collection来存储缓存,主要用来测试用途

  • ConcurrentMapCache:使用ConcurrentMap来存储缓存

  • NoOpCacheManager:仅测试用途,不会实际存储缓存

  • EhCacheCacheManager:使用EhCache作为缓存技术

  • GuavaCacheManager:使用Google Guava的GuavaCache作为缓存技术

  • HazelcastCacheManger:使用Hazelcast作为缓存技术

  • JCacheCacheManager:支持JCache(JSR-107)标准的实现作为缓存技术,如Apache Commons JCS

  • RedisCacheManager:使用Redis作为缓存技术

在我们使用任意一个实现的CacheManager的时候,需注册实现的CacheManager的Bean,例如

@Bean
public EhCacheCacheManager cacheManager(CacheManager ehCacheCacheManager){
    return new EhCacheCacheManager(ehCacheCacheManager);
}

当然,每种缓存技术都有很多的额外配置,但配置CacheManager是必不可少的。

三 声明式缓存注解

Spring提供了4个注解来声明缓存规则。这4个注解的说明如下:

  • @Cacheable:在方法执行前Spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法的的返回值放进缓存。

  • @CachePut:无论怎样,都会将方法的返回值放到缓存中。@CachePut的属性与@Cacheable保持一致。

  • @CaheEvict:将一条或多条数据从缓存中删除。

  • @Caching:可以通过@Caching注解组合多个注解策略在一个方法上。

@Cacheable、@CachePut、@CaheEvict都有value属性,指定的是要使用缓存名称;key属性指定的是数据在缓存中的存储的键。

四 开启声明式缓存支持

开启声明式缓存支持方法:只需在配置类上使用@EnableCaching即可,伪代码如下:

@Configuration
@EnableCaching
public class AppConfig{
    
}

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/83216540