1、首先springCache需要导入一下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

2、相关注解详解:

2.1、@Cacheable:

2.1.1 @Cacheable 属性:

  Cacheable 将方法的运行结果进行缓存;以后再要相同数据,直接找缓存中获取,不用再调用方法。
  CacheMananger:管理多个cache组件,对缓存的真正crud操作在Cache组件中,每一个缓存组件都有自己唯一的一个名字
  属性说明:
      cacheNames/value: 指定缓存组件的名字(即放到哪几个缓存中),是数组的方式,可以指定多个
      key: 缓存数据使用的key,可以用他指定,默认使用方法参数的值(可以使用spel表达式,如#id,就是参数id的值)
      keyGenerator: key的生成器,可以自己指定key的生成器的组件id
      (key和keyGenerator二选一)
      cacheManager: 指定缓存管理器 或者是指定缓存的解析器cacheResolver;
      condition: 指定符合条件的情况下才缓存,指定条件为true才缓存
      unless: 否定缓存(等同于除非),但unless指定的条件为true,方法的返回值就不会被缓存;(使用的时候可以获取到结果进行判断)
      sync: 是否使用异步模式。

2.1.2 @Cacheable 运行流程
  1、方法运行之前,先去查询cache(缓存组件),按照cacheNames指定的名字获取;
  (CacheManager先获取相应的缓存),第一次获取缓存,如果没有缓存组件会自动创建。
  2、去cache中查找缓存中的内容,使用一个key。默认是方法的参数
     (key是根据某种策略生成的,默认使用keyGenerator生成,也是 生成key)
     SimpleKeyGenerator生成key默认策略:
          如果没有参数,key = new SimpleKey()
          如果有一个参数,key = 参数的值
          如果有多个参数,key = new SimpleKey(params)
  3、没有查到就调用目标方法
  4、没有查到缓存就调用目标方法,将目标方法的结果返回并缓存

备注:@Cacheable标注的方法执行之前会先去查询缓存中有没有这个数据,默认是按照参数的值做为key去查询缓存,如果没有就运行方法,并将返回结果放入缓存

2.1.3 核心:

1、使用cacheManage(默认是ConcurrentMapCacheManager)按照名字得到Cache(默认是ConcurrentMapCache)组件

2、key是使用keyGenerator生成的,默认是SimpleKeyGenerator生成key

3、获取缓存,没有则创建缓存组件

2.2 、@CachePut

@CachePut 既调用方法,又更新缓存 修改数据数据库的同时又更新缓存

1、设置需要更新缓存组件名

2、设置需要更新的key(这里要与该缓存创建时使用的key生成策略一致,才能对对应更新缓存,否则无效),这里的key可以使用两种方式:

方式一:使用参数的形式 key = "#department.id"

方式二:使用返回值结果 key = "#result.参数名"
 其属性与@Cacheable相关属性相同
@Cacheable 不能使用#result,因为这个是返回结果才能使用,但是@Cacheable在执行方法前就要使用key,所以不行

2.3 、@CacheEvict

@CacheEvict  清除缓存

key: 指定清除数据的key值

cacheNames: 指定缓存组件名称

allEntries = true: 清除缓存组件下的所有数据(默认为false)

beforeInvocation = false: 是否在方法执行前清除缓存(默认是在方法执行之后清除缓存(即false),在方法执行之后清除缓存会出现方法报异常后,缓存不会清除)

beforeInvocation =true: 表示在方法执行之前就清除缓存,无论方法是否执行成功

2.4 、@Caching

@Caching 定义复杂的缓存规则

如:@Caching( cacheable = { @Cacheable(cacheNames = "department", key = "#id") }, put = { @CachePut(cacheNames = "department", key = "#departmentName") })

2.5 @CacheConfig

@CacheConfig全局定义缓存组件名、key生成策略、缓存管理器、缓存解析器

如全局定义缓存组件名:@CacheConfig(cacheNames = "department")

springCache注解详解相关推荐

  1. 26.SpringBoot事务注解详解

    转自:https://www.cnblogs.com/kesimin/p/9546225.html @Transactional spring 事务注解 1.简单开启事务管理 @EnableTrans ...

  2. mybatis注解详解

    mybatis注解详解 首 先当然得下载mybatis-3.0.5.jar和mybatis-spring-1.0.1.jar两个JAR包,并放在WEB-INF的lib目录下 (如果你使用maven,则 ...

  3. 开启注解缓存_Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解

    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...

  4. spring-boot注解详解(一)

    spring-boot注解详解(一) @SpringBootApplication @SpringBootApplication = (默认属性)@Configuration + @EnableAut ...

  5. Spring零配置之@Configuration注解详解

    转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...

  6. Spring Boot注解详解

    文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...

  7. 【SpringBoot 】SpringBoot注解详解

    [SpringBoot ]SpringBoot注解详解 一.注解(annotations)列表  @SpringBootApplication:包含了@ComponentScan.@Configura ...

  8. java method 注解_JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档  这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...

  9. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

最新文章

  1. boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍
  2. java jdbc 登录_java web JDBC 判断用户登录问题!
  3. 东莞理工学院计算机ccf,中国计算机学会东莞分部成立
  4. git 上传修改文件
  5. C++ C++11新特性--右值引用
  6. 吴恩达机器学习训练2:Logistic回归
  7. 第十五节,基本数据类型,元组tuple
  8. Go语言的异常处理之errors,panic, recover
  9. eviews建立时间序列模型_Eviews系列12|时间序列模型常见问题解答
  10. PHP7.1 狐教程
  11. go-项目配置govendor【详细教程】
  12. The authentication type 10 is not supported
  13. 磁条卡知识学习与数据解析
  14. NLP定义和机器翻译
  15. java计算机毕业设计智友少儿编程学习平台源码+mysql数据库+系统+部署+lw文档
  16. 斗争程序猿(四十一)——历史朝代大学(五岁以下儿童)——我的娱乐
  17. 【车流量预测论文】(2020)GMAN: A Graph Multi-Attention Network for Traffic Prediction-20201213
  18. Docker搭建Skywalking环境
  19. CNI 网络分析 4.4 Calico IPIP
  20. ctf训练 web安全暴力破解

热门文章

  1. 计算机培训技术备课,教师计算机培训方法与策略之我见
  2. cropperjs图片裁剪器及七牛上传文件
  3. matlab 对数坐标
  4. 【原创】我的MP3播放器--2007.12(搬家待修复)
  5. CUDA加速计算矩阵乘法进阶玩法(共享内存)
  6. Mangos.conf说明
  7. 找回Windows XP 815主板下的160G硬盘
  8. Windows XP 搭建PPPoE服务器_计算机软件及应用_IT/计算机_专业资料
  9. 仿蘑菇街,京东,苏宁易购,海尔商城等33套大气购物商城网站模板,附源码免费下载地址...
  10. el-table 表头自定义动态树形筛选框