Spring Cache
Spring Cache是一个框架,实现了基于注解的缓存功能,只需简单加一个注解,就能实现缓存功能
底层提供了抽象,可以切换不同的缓存实现,例如:EHCache,Caffeine,Redis
maven坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>2.7.3</version>
</dependency>
注解
| 注解 | 说明 |
|---|---|
| @EnableCaching | 开启缓存注解功能,通常加在启动类上 |
| @Cacheable | 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中 |
| @CachePut | 将方法的返回值放到缓存中 |
| @CacheEvict | 将一条或多条数据从缓存中删除 |
CachePut样例
//key生成样式为:userChache::id
//@CachePut(cacheNames= "userCache",key = "#result.id")
//@CachePut(cacheNames= "userCache",key = "#p0.id")
//@CachePut(cacheNames= "userCache",key = "#a0.id")
//@CachePut(cacheNames= "userCache",key = "#root.args[0].id")
//@CachePut(cacheNames= "userCache",key = "#user.id")
public User save(@RequestBody User user){
userMapper.insert(user);
return user;
}
Cacheable样例
@Cacheable("cacheNames= "userCache",key = "#id"")//此处只能用形参id
public User getById(Long id){
User user = userMapper.getById(id);
return user;
}
CacheEvict样例
//方法执行完才删除缓存数据,此方法只能删除一条数据
@Cacheable("cacheNames= "userCache",key = "#id"")
public void deleteById(Long id){
userMapper.deleteById(id);
}
//此方法能删除所有数据
@Cacheable("cacheNames= "userCache",allEntries = true)
public void deleteById(){
userMapper.deleteAll();
}
1539

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



