pring Cache介绍
Spring Cache是一个框架, 实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功 能。
Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来 统一不同的缓存技术。
CacheManager缓存管理器是Spring提供的各种缓存技术抽象接口 针对不同的缓存技术需要实现不同的CacheManager:
CacheManager | 描述 |
EhCacheCacheManager | 使用EhCache作为缓存技术(Spring Cache框架操作的默认缓存) |
GuavaCacheManager | 使用Google的GuavaCache作为缓存技术 |
RedisCacheManager | 使用Redis作为缓存技术 |
Spring Cache 常用注解
注解 | 说明 |
@EnableCaching | 开启缓存注解功能 |
@Cacheable | 在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓 存数据;若没有数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
使用步骤:
- .引入缓存启动器:spring-boot-starter-cache,spring-boot-starter-data-redis
- @EnableCaching:在启动类上,开启基于注解的缓存
- @Cacheable : 标在方法上,返回的结果会进行缓存
属性: value/cacheNames缓存的名字
key : 作为缓存中的Key值,可自已使用 SpEL表达式指定(不指定就是参数值), 缓存结果是 方法返回值
名字 | 描述 | 示例 |
methodName | 当前被调用的方法名 | #root.methodName |
target | 当前被调用的目标对象 | #root.target |
targetClass | 当前被调用的目标对象类 | #root.targetClass |
args | 当前被调用的方法的参数列表 | #root.args[0] |
caches | 当前方法调用使用的缓存列表(如@Cacheable(value={"cache1", "cache2"})),则有两个cache | #root.caches[0].name |
argument name | 方法参数的名字. 可以直接 #参数名 ,也可以使用 #p0或#a0 的形式,0代 表参数的索引; | #iban 、 #a0 、 #p0 |
result | 方法执行后的返回值(仅当方法执行之后的判断有效,在@CachePut 使用于 更新数据后可用) | #result |