Spring Boot数据缓存之声明式缓存支持
在Spring Boot数据缓存之Spring缓存抽象 @Cacheable初体验对声明式数据缓存有了初步的体验,那么Spring Boot是如何支持数据缓存的呢?由于Mybatis本身也具备缓存的功能,那怎么知道案例中的环境使用的是Spring Boot中提供的还是Mybatis自带的缓存功能呢?将数据访问的方式改为JPA方式(使用参考数据访问 / Spring Data JPA)在Spring Data JPA应用之查询操作初体验案例基础上探究一二:
在Spring中使用缓存技术的关键是配置CacheManager,下图是Spring内置的CacheManager实现:
而如上篇案例中并没有配置CacheManager而是Spring Boot自动配置了多个CacheManager的实现,可以看下其自动配置包中的内容:根据CacheType中类型定义匹配对应的Cache类
查看以上任意一个Configuration:
可以看到满足一定条件才会加载该Cache Bean。最后可以看到在不做任何额外配置的情况下,默认使用的是SimpleCacheConfiguration——即ConcurrentMapCacheManager:
Spring Boot支持以“Spring.cache”为前缀的属性类配置缓存:
以上是关于@EnableCaching注解的分析。那配合使用的还有@Cacheable、@CachePut、@CacheEvict,下面分别进行分析
@Cacheable
测试结果是:
访问localhost:8080/resume/2,控制台上显示。再次访问localhost:8080/resume/2,此时控制台没有再出现这样的内容也可以查询到结果。
@CachePut
注意一定要有绿框中的内容否则缓存不生效。数据保存后,将结果保存到了缓存(绿框中的result就是保存的数据)。从测试结果看save以后,查询该数据控制台无输出直接从缓存中获取数据。
@CacheEvict