springboot框架学习积累—SpringBoot缓存管理
1.环境搭建
2. 默认缓存体验
@EnableCaching:在主启动类上添加这个注解,表示开启SpringBoot基于注解的缓存管理支持
@EnableCaching
@SpringBootApplication
public class Springboot05CacheApplication {
public static void main(String
[] args
) {
SpringApplication
.run(Springboot05CacheApplication
.class, args
);
}
}
@Cacheable:这个注解是对数据操作方法进行缓存管理,将该注解标注在Service类的查询方法上,对查询结果进行缓存(放入springboot的默认缓存中) , cacheNames:起一个缓存命名空间 对应缓存唯一标识
@Cacheable(cacheNames
= "comment")
public Comment
findCommentById(Integer id
){
Optional
<Comment> byId
= commentRepository
.findById(id
);
if (byId
.isPresent()){
Comment comment
= byId
.get();
return comment
;
}
return null
;
}
SpringBoot默认缓存底层结构是一个Map集合,用到的就是ConcurrentMap
private final ConcurrentMap
<String, Cache> cacheMap
= new ConcurrentHashMap(16);
3. 缓存注解介绍
@EnableCaching注解: @Cacheable注解: @Cacheable注解常用属性 默认缓存执行流程&时机: 常用的SPEL表达式 @CachePut注解:被使用于修改操作比较多,哪怕缓存中已经存在目标值了,但是这个注解会保证这个方法依然会执行,执行之后的结果会保存在缓存中@CachePut注解提供很多属性,与@Cacheable属性完全相同@CacheEvict注解,经常作用于类/方法上,通常用于数据删除方法上,该注解的作用就是删除缓存数据。@CacheEvict注解的默认执行顺序是,先进行方法调用,然后将缓存清除