文章目录
1、简介
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache 提供了一层抽象,底层可以切换不同的cache实现。
具体就是通过 CacheManager 接口来统一不同的缓存技术。
CacheManager 是 Spring 提供的各种缓存技术抽象接口,这是默认的缓存技术,是缓存在Map中的,这也说明当服务挂掉的时候,缓存的数据就没了。
针对不同的缓存技术需要实现不同的 CacheManager
| CacheManager | 描述 |
|---|---|
| EhCacheCacheManager | 使用 EhCache 作为缓存技术 |
| GuavaCacheManager | 使用 Google 的 GuavaCache 作为缓存技术 |
| RedisCacheManager | 使用 Redis 作为缓存技术 |
2、常用注解
在 Spring Boot 项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用 @EnableCaching 开启缓存支持即可。例如,使用 Redis 作为缓存技术,只需要导入 Spring data Redis 的 maven 坐标即可。常用的注解有如下几个:
| 注解 | 说明 |
|---|---|
| @EnableCaching | 开启缓存注解功能 |
| @Cacheable | 在方法执行前 spring 先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中 |
| @CachePut | 将方法的返回值放到缓存中 |
| @CacheEvict | 将一条或多条数据从缓存中删除 |
2.1、@EnableCaching
该注解的主要功能就是开启缓存注解的功能,让 Spring Cache 中的其他注解生效。使用方式也十分简单,直接将其加在项目的启动类上方即可。
@Slf4j
@SpringBootApplication
@EnableCaching
public class CacheDemoApplication {
public static void main(String[] args) {
SpringApplication.run(CacheDemoApplication.class, args);
log.info("项目启动成功...");
}
}
2.2、@Cacheable
@Cacheable注解主要是在方法执行前 先查看缓存中是否有数据。如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中。
注解中的参数传递主要使用的是**SpEL(Spring Expression Language)**对数据进行获取传递,这有点类似于JSP中的EL表达式,常用方式如下几种:
- “#p0”:获取参数列表中的第一个参数。其中的“#p”为固定写法,0为下标,代表第一个;
- “#root.args[0]”:获取方法中的第一个参数。其中0为下标,代表第一个。
- “#user.id”:获取参数 user 的 id 属性。注意的是这里的 user 必须要和参数列表中的参数名一致
- “#result.id”:获取返回值中的 id 属性。
来自Spring Cache源码:Spring Expression Language (SpEL) expression used for making the method
在@Cacheable注解中有几种常用的属性可进行需求性设置:
- value

最低0.47元/天 解锁文章
770

被折叠的 条评论
为什么被折叠?



