springCache注解详解
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注解详解相关推荐
- 26.SpringBoot事务注解详解
转自:https://www.cnblogs.com/kesimin/p/9546225.html @Transactional spring 事务注解 1.简单开启事务管理 @EnableTrans ...
- mybatis注解详解
mybatis注解详解 首 先当然得下载mybatis-3.0.5.jar和mybatis-spring-1.0.1.jar两个JAR包,并放在WEB-INF的lib目录下 (如果你使用maven,则 ...
- 开启注解缓存_Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...
- spring-boot注解详解(一)
spring-boot注解详解(一) @SpringBootApplication @SpringBootApplication = (默认属性)@Configuration + @EnableAut ...
- Spring零配置之@Configuration注解详解
转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...
- Spring Boot注解详解
文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...
- 【SpringBoot 】SpringBoot注解详解
[SpringBoot ]SpringBoot注解详解 一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configura ...
- java method 注解_JAVA 注解详解及简单实例
JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档 这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...
- Java基础13:反射与注解详解
Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...
最新文章
- boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍
- java jdbc 登录_java web JDBC 判断用户登录问题!
- 东莞理工学院计算机ccf,中国计算机学会东莞分部成立
- git 上传修改文件
- C++ C++11新特性--右值引用
- 吴恩达机器学习训练2:Logistic回归
- 第十五节,基本数据类型,元组tuple
- Go语言的异常处理之errors,panic, recover
- eviews建立时间序列模型_Eviews系列12|时间序列模型常见问题解答
- PHP7.1 狐教程
- go-项目配置govendor【详细教程】
- The authentication type 10 is not supported
- 磁条卡知识学习与数据解析
- NLP定义和机器翻译
- java计算机毕业设计智友少儿编程学习平台源码+mysql数据库+系统+部署+lw文档
- 斗争程序猿(四十一)——历史朝代大学(五岁以下儿童)——我的娱乐
- 【车流量预测论文】(2020)GMAN: A Graph Multi-Attention Network for Traffic Prediction-20201213
- Docker搭建Skywalking环境
- CNI 网络分析 4.4 Calico IPIP
- ctf训练 web安全暴力破解
热门文章
- 计算机培训技术备课,教师计算机培训方法与策略之我见
- cropperjs图片裁剪器及七牛上传文件
- matlab 对数坐标
- 【原创】我的MP3播放器--2007.12(搬家待修复)
- CUDA加速计算矩阵乘法进阶玩法(共享内存)
- Mangos.conf说明
- 找回Windows XP 815主板下的160G硬盘
- Windows XP 搭建PPPoE服务器_计算机软件及应用_IT/计算机_专业资料
- 仿蘑菇街,京东,苏宁易购,海尔商城等33套大气购物商城网站模板,附源码免费下载地址...
- el-table 表头自定义动态树形筛选框