SpringBoot使用Spring缓存注解

总结:
1.常用的注解有:@EnableCaching、@Cacheable、@CacheEvict、@CachePut、@Caching、@CacheConfig

  • @EnableCaching:开关性注解,在项目启动类或某个配置类上使用此注解后,则表示允许使用注解的方式进行缓存操作
  • @Cacheable:可用于类或方法上;在目标方法执行前,会根据key先去缓存中查询看是否有数据,有就直接返回缓存中的key对应的value值。不再执行目标方法;无则执行目标方法,并将方法的返回值作为value,并以键值对的形式存入缓存
  • @CachePut:可用于类或方法上;在执行完目标方法后,并将方法的返回值作为value,并以键值对的形式存入缓存中
  • @CacheEvict:可用于类或方法上;在执行完目标方法后,清除缓存中对应key的数据(如果缓存中有对应key的数据缓存的话)
  • @Caching:此注解即可作为@Cacheable、@CacheEvict、@CachePut三种注解中的的任何一种或几种来使用
  • @CacheConfig:@Cacheable、@CacheEvict、@CachePut这三个注解的cacheNames属性是必填项(或value属性是必填项,因为value属性是cacheNames的别名属性);如果上述三种注解都用的是同一个cacheNames的话,那么在每此都写cacheNames的话,就会显得麻烦。如将@CacheConfig注解就是来配置一些公共属性(如cacheNames、keyGenerator等)的值的

2.缓存注解的常用属性

key:
key的来源可分为三类,分别是:默认的、keyGenerator生成的、主动指定的。
condition:
在激活注解功能前,进行condition验证,如果condition结果为true,则表明验证通过,缓存注解生效;否则缓存注解不生效。
cacheNames:
通过cacheNames对数据进行隔离,不同cacheName下可以有相同的key。
unless:
功能是:是否令注解(在方法执行后的功能)不生效;若unless的结果为true,则(方法执行后的功能)不生效;若unless的结果为false,则(方法执行后的)功能生效。
注:unless默认为"",即相当于默认为false。
allEntries:
此属性主要出现在@CacheEvict注解中,表示是否清除指定命名空间中的所有数据,默认为false。
beforeInvocation:
此属性主要出现在@CacheEvict注解中,表示 是否在目标方法执行前使 此注解生效。 默认为false,即:目标方法执行完毕后此注解生效。

————————————————
参考原文链接:https://blog.csdn.net/justry_deng/article/details/89283664

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐