目录
一、概述
Spring Cache是一个框架,实现了基于
注解
的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同地缓存实现,例如:
- EHCache
- Caffeine
- Redis
二、常用注解
方法 | 说明 |
---|---|
@EnableCaching | 开启缓存注解功能,通常加在启动类 上 |
@Cacheable | 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法地返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
三、入门
2.1 引入POM文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
2.2 开启注解依赖
在主启动类上增加
@EnableCaching
注解
@Slf4j
@EnableCaching // 开启缓存注解功能
@SpringBootApplication
public class CacheDemoApplication {
public static void main(String[] args) {
SpringApplication.run(CacheDemoApplication.class,args);
log.info("项目启动成功...");
}
}
2.3 @Cacheable
在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中。
一般用于查询操作
@GetMapping
@Cacheable(cacheNames = "userCache", key = "#id")
public User getById(Long id) {
User user = userMapper.getById(id);
return user;
}
2.4 @CachePut
将方法地返回值放到缓存中。
一般用于新增操作
@PostMapping
@CachePut(cacheNames = "userCache", key = "#user.id") // 如果使用Spring Cache缓存数据,key地生成格式:cacheNames::key
// @CachePut(cacheNames = "userCache", key = "#result.id") // 返回值地ID
public User save(@RequestBody User user) {
userMapper.insert(user);
return user;
}
2.5 @CacheEvict
将一条或多条数据从缓存中删除。
一般用于删除操作
2.5.1 删除一条缓存
@DeleteMapping
@CacheEvict(cacheNames = "userCache", key = "#id")
public void deleteById(Long id) {
userMapper.deleteById(id);
}
2.5.1 删除全部缓存
@DeleteMapping("/delAll")
@CacheEvict(cacheNames = "userCache", allEntries = true) // 删除 userCache 下所有的键值对
public void deleteAll() {
userMapper.deleteAll();
}
注意:只有方法全部执行完成之后,才会操作缓存数据、