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

            

            

 

posted on 2024-04-08 19:30  池塘里洗澡的鸭子  阅读(16)  评论(0编辑  收藏  举报