一、启用对缓存的支持
Spring 的缓存抽象在很大程度上是围绕切面构建的。
Spring 对缓存的支持有两种方式:
- 注解驱动的缓存
- XML 声明的缓存
在方法上添加 @Cacheable
和 CacheEvivt
注解来使用缓存。
启用 Spring 对注解驱动缓存的支持,在配置类上添加 @EnableCaching
,并声明缓存管理器:
@Bean
public CacheManager cacheManager(){
return new ConcurrentMapCacheManager();
}
xml配置:
<cache:annotation-driven />
<bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager" />
启用注解驱动缓存后,会创建一个切面并触发Spring 缓存注解的切点。根据使用的注解及缓存状态,这个切面会从缓存中获取数据,将数据添加到缓存中或者从缓存中移除。
缓存管理器是 Spring 缓存抽象的核心,它能与多个流行的缓存实现进行集成。ConcurrentMapCacheManager
是一个简单的缓存管理器,但它是基于内存的,其生命周期是与应用关联的。
1、配置缓存管理器
Spring 3.1 内置了五个缓存管理器实现:
SimpleCacheManager
NoOpCacheManager
ConcurrentMapCacheManager
CompositeCacheManager
EhCacheManager
Spring 3.2 又引入了另一个缓存管理器,它可以用于基于 JCache 的缓存提供商中。除了核心的Spring 框架,Spring Data又提供了两个缓存管理器:
RedisCacheManger
(来自 Spring Data Redis)GemfireCacheManager
(Spring Data CemFire)
使用 Redis 缓存
通过传递一个 RedisTemplate
实例到其构造器,构建 RedisCacheManger
。
@Configuration
@EnableCaching
public class CachingConfig {
/