一.简介1、缓存简介
Spring从3.1开始引入了对Cache的支持。 定义了org.spring framework.cache.cache和org.spring framework.cache.cachemanager接口以统一不同的缓存技术。 支持使用jcache(JSR-107 )注释简化开发。
其使用方法和原理类似于Spring对事务管理的支持。 Spring Cache作用于方法,中心是在调用缓存方法时使方法参数和返回结果作为键值对存在于缓存中。
2、Cache和CacheManager界面说明
Cache接口包含用于操作缓存的各种操作的集合。
Cache接口上的Spring提供了各种xxxCache实现,包括RedisCache、EhCache和ConcurrentMapCache
CacheManager定义了创建、配置、检索、管理和控制具有唯一名称的多个Cache。 这些Cache存在于CacheManager的上下文中。
小结:
每次调用需要缓存功能的方法时,Spring都会检查指定参数的指定目标方法是否已经被调用,如果有,则直接从缓存中获取调用方法后的结果,否则调用方法缓存结果,用户下一次调用直接从缓存中检索。
二. @Cacheable注释使用详情1、缓存使用步骤
@Cacheable的注释用于使用缓存。 首先说明一下缓存的使用步骤吧。
1、打开基于注释的缓存,用@EnableCaching标识SpringBoot的主启动类。
2、标记缓存注释即可
步骤1 :打开基于注释的缓存,使用@EnableCaching标记springboot主启动类
步骤2 :标记缓存注释
注意:现在可以使用@Cacheable注释来缓存执行结果,以便以后查询相同的数据并直接从缓存中提取。 不需要调用方法。
2、常用属性描述
以下是@Cacheable注释的几个常用属性。
cacheNames/value :用于指定缓存组件的名称
key :缓存数据时使用的key。 这样就可以指定了。 默认值为使用方法参数的值。 (这个key可以用spEL公式写。)
密钥生成器:密钥的生成器。 key和keyGenerator二者择一使用
cacheManager :用于指定缓存管理器。 要从哪个缓存管理器获取缓存?
condition :可以指定仅在满足条件时进行缓存
unless :否定缓存。 如果unless指定的条件为true,则不缓存方法的返回值。 当然也可以根据结果进行判断。 (在#result中获取方法结果)
sync :是否使用异步模式。
cacheNames
用于指定缓存组件的名称,以及指定将方法的返回结果放入哪个缓存中。 可以是数组方式,支持指定多个缓存。
key
缓存数据时使用的key。 默认情况下使用方法参数的值。 可以使用spEL表达式进行编写。
密钥生成器
密钥生成器可以自己指定密钥生成器,然后使用该生成器生成密钥。
这样放入缓存的key的生成规则是根据你定制的key生成器生成的。 但是需要注意的是:
在key和keyGenerator使用时,@Cacheable的属性通常是双重的。
冷凝
仅在满足条件时缓存。 可以动态确定是否缓存从方法返回的数据。
未注册
否定缓存。 如果unless指定的条件为true,则不缓存方法的返回值。
同步
是否使用异步模式。 缺省情况下,方法完成执行,并且方法返回的结果同步保存在缓存中。
3、spEL写密钥
如上所述,缓存的key支持使用spEL表达式进行编写。 然后,使用spEL总结key可用的元数据。