Spring Cache
Spring Cache用于对主流的缓存组件(Redis,EhCache,GuavaCache,JCache等)进行集成,提供统一的,基于注解的缓存功能(利用Spring AOP特性)。
常用注解:
-
@Cacheable
一般使用在查询方法。方法的返回值会被缓存。下一次查询,会先检查缓存中是否存在:
如果有,则直接返回,不再调用方法体;
如果没有,则调用方法,然后把结果放入缓存。
- value与cacheNames本质相同,定义缓存名称
- key:设置key。
- keyGenerator:key生成器,可自定义bean。
- cacheManager:缓存管理器
- cacheResolver:缓存解析器
- condition:条件,符合条件的走缓存。支持EL脚本
- unless:除非,当里面的条件为true,则不走缓存。支持EL脚本
- sync:是否异步
-
@CachePut
一般使用在新增方法(插入)。方法的返回值会放入缓存中。
-
@CacheEvict
一般使用在更新或删除方法。清除指定的缓存。
- allEntries:是否清除缓存中的所有元素,默认false
- beforeInvocation:是否在方法体执行前进行清除缓存的操作,默认为false。设置为true,则保证了在执行删除操作中,出错也能清除缓存
-
@Caching
从源码上看是Cacheable、CachePut、CacheEvict的组合注解
-
@CacheConfig
上述的4个注解都作用于方法上,
@CacheConfig
作用于类上,用于统一设定。
上手使用
-
maven中添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>