Spring Boot缓存

文章内容来自《Spring Boot开发实战 》 陈光剑

使用Spring Cache实现数据的缓存。

在Spring 3.1中,引入了对Cache的支持。在spring-context包中定义了org.spring-framework.cache.CacheManager和org.springframework.cache.Cache接口用来统一不同的缓存的技术。其中,CacheManager是Spring提供的各种缓存技术抽象接口,Cache接口包含缓存的常用操作:增加、删除、读取等。针对不同的缓存技术,需要实现不同的CacheManager, Spring支持的常用Cache-Manager如表14-1所示。

Spring Boot缓存_第1张图片
表14-1 Spring支持的常用CacheManager

Spring Cache的核心思想是:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。

Spring Cache提供了@Cacheable、@CachePut、@CacheEvict等注解,在方法上使用。通过注解Cache可以实现类似于事务一样、缓存逻辑透明的应用到我们的业务代码上。


Cache注解

❑@Cacheable——主要针对方法配置,根据方法的请求参数对其结果进行缓存。

❑@CachePut——主要针对方法配置,根据方法的请求参数对其结果进行缓存,和@Cacheable不同的是,每次都会触发真实方法的调用。

❑@CacheEvict——主要针对方法配置,能够根据一定的条件对缓存进行清空。

❑@Caching——用来组合使用其他注解,可以同时应用多个Cache注解。

  1. @Cacheable该注解中的属性值如下:❑value:缓存名,必填。❑key:可选属性,可以使用SPEL标签自定义缓存的key。❑condition:属性指定发生的条件。

  2. @CachePut使用该注解标识的方法,每次都会执行目标逻辑代码,并将结果存入指定的缓存中。之后另一个方法就可以直接从相应的缓存中取出缓存数据,而不需要再去查询数据库。@CachePut注解的属性说明如下:❑value:缓存名,必填。❑key:可选属性,可以使用SPEL标签自定义缓存的key。

  3. @CacheEvict标记要清空缓存的方法,当这个方法被调用后,即会清空缓存。@CacheEvict注解属性说明如下:❑value:必填。❑key:可选(默认是所有参数的组合)。❑condition:缓存的条件。❑allEntries:是否清空所有缓存内容,默认为false。如果指定为true,则方法调用后将立即清空所有缓存。❑beforeInvocation:是否在方法执行前就清空,默认为false。如果指定为true,则在方法还没有执行的时候就清空缓存。默认情况下,如果方法执行抛出异常,则不会清空缓存。

  4. @Caching@Caching注解的源码如下,从中可以看到同时使用了Cacheable、CachePut、Cache-Evict方法:

    使用@Caching注解可以实现在同一个方法上同时使用多种注解。
    使用案例可以参考:https://www.cnblogs.com/ashleyboy/p/9591604.html


    项目实战:

    spring-boot-starter-cache

本章示例工程源代码地址为:https://github.com/EasySpringBoot/demo_cache。

你可能感兴趣的:(springboot)