缓存可以存储常用到的信息,每次需要的时候我们都可以从缓存中获取,本章我们一起来进行了解Spring的缓存抽象.尽管Spring没有提供任何的缓存的实现,但是它对缓存功能提供了声明式的支持,能够与多种流行的缓存进行集成
我们一般在Spring项目中使用缓存功能我们需要对Spring项目进行一些相关的配置,流程如下
启用对缓存的支持
配置缓存管理器
应用缓存
启用对缓存的支持
JavaConfig配置启用
@Configuration@EnableCachingpublic class SpringCacheConfig { }
XML配置启用
<!--启用缓存--> <cache:annotation-driven/>
配置缓存管理器
在Sring中我们可以使用很多的缓存管理器的实现
ConcurrentMapCacheManager
SimpleCacheManager
NoOpCacheManager
CompositeCacheManager
EhCacheCacheManager
RedisCacheManager
GemfireCacheManager
...
JavaConfig配置缓存管理器
@Bean public CacheManager cacheManager() { return new ConcurrentMapCacheManager(); }
XML配置缓存管理器
<!--声明缓存管理器--> <bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"/>
应用缓存
我们经常在项目中使用注解作用在方法上,使其应用缓存,常见的注解如下
注解 | 描述 |
---|---|
@Cacheable | 先查缓存,如果缓存没有调用方法,将返回值放入缓存中 |
@CachePut | 始终都会将返回值放入缓存中 |
@CacheEvict | 在缓存中清除一个或者多个条目 |
@Caching | 分组的注解,能够同时应用多个其他的缓存注解 |
使用示例:查询缓存
@Cacheable(value = "UserCache", key = "#root.args[0]") User getUser(String username);
使用示例:保存缓存
@CachePut(value = "UserCache", key = "#result.username") User save(User user);
使用示例:移除缓存
@CacheEvict("UserCache") void remove(String username);
本章完整工程实例代码下载地址:完整项目演示工程点击下载