Spring-Boot——Cache

简单使用

1. maven 依赖

2. 开启缓存配置

在启动类上开启缓存 @EnableCaching

3. 使用缓存

@Cacheable 是将方法的返回值保存到缓存中
@CachePut 是根据key更新缓存中的数据
@CacheEvict 是根据key删除缓存数据

@Cacheable(cacheNames = {"emp"}, key = "#id")
public Employee getEmp(Integer id) {Employee employeeId = employeeMapper.getEmployeeId(id);return employeeId;
}
@CachePut(cacheNames = {"emp"}, key = "#result.id")
public Employee updateEmp(Employee employee) {employeeMapper.updateEmp(employee);return employee;
}
@CacheEvict(cacheNames = {"emp"}, key = "#id")
public boolean delete(Integer id) {employeeMapper.delete(id);return true;
}

自动配置原理

1. 默认的缓存配置器

 * 直接搜索类 ```CacheAutoConfiguration``` 找到 ```CacheConfigurationImportSelector.selectImports```方法,该方法会返回所有的自动配置类:
```org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration```
`org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration`
`org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration`
* 在 `application.yml` 中 设置 `debug: true`,在控制台可以看到默认使用的自动配置类
```
SimpleCacheConfiguration matched:- Cache org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration automatic cache type (CacheCondition)- @ConditionalOnMissingBean (types: org.springframework.cache.CacheManager; SearchStrategy: all) did not find any beans (OnBeanCondition)
```

2. @Cacheable 不能的key不能使用result,因为@Cacheable在方法执行前调用的。

3. @CachePut 可以使用result中的数据,因为@CachePut在方法执行后调用。

  1. @CacheEvict 默认在方法执行之后执行(如果方法执行出错,将不会执行),可以通过 beforeInvocation=true 设置为在方法之前执行。

转载于:https://www.cnblogs.com/Godfunc/p/9316563.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

awk中文手册

awk中文手册下载:http://www.klabaster.com/freeware.htm#mawk1. awk简介awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进…

在vue中操作DOM--this.$nextTick()

虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做。比如一个新闻滚动的列表项。如果在这里需要操作dom, 应该是等待 Vue 完成更新 DOM之后。 一、新闻滚动列表 1、在created函数中获取后台数据&#…

python如何移动图片_python之详细图像仿射变换讲解(图像平移、旋转、缩放、翻转),一文就够了,赶紧码住...

仿射变换简介 什么是放射变换 图像上的仿射变换, 其实就是图片中的一个像素点,通过某种变换,移动到另外一个地方。 从数学上来讲, 就是一个向量空间进行一次线形变换并加上平移向量, 从而变换到另外一个向量空间的过程。 向量空间…

git merge用法_常用命令之git操作(进阶篇)

几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。不同的分支可以理解为…

2G内存刚刚好 浅谈4G内存对笔记本的影响

随着Intel P3x系列芯片组的发布,DDR3内存的普及日益临近,AMD K10系列处理器AM2规格也正式支持DDR3内存,明年即将面临淘汰的DDRII内存是越来越便宜了。很多笔记本用户在购买笔记本的时候都把是否支持4G内存作为一个总要的衡量标准。官方资料里…

由object元素引出的事件注册问题和层级显示问题

项目有一个双击监控视频全屏的需求,视频播放使用的是IE下的ActiveX控件,web页面中使用HTML嵌入对象元素object。预期方案如下: 1.在开发ActiveX控件时加入双击事件。 2.通过div包裹object,控制div的大小从而间接实现全屏效果。 在…

cad钣金展开插件_钣金高级工考试大小头手工展开图步骤教程

提醒:点上方↑↑↑“钣金学习网”免费关注简单方法一: 等分弧画法简单方法二: 角度计算画法1、先画一条中心直线,在线上取一点A,过A点画一条与中心线垂直相交线。量取大头半径以A点为起点在相交线上标注一点&#…

介绍一个新鲜玩意 开源的杀毒软件

有“免费的午餐”我们为什么不吃呢?杀毒软件一定要购买或用D版吗?先别忙着下结论,请耐心看完本文,然后再告诉我你是怎么想的。(一)、ClamWin Free Antivirus 开源反病毒软件 GPL协议SourceForge页面&#x…

没有可用软件包 jenkins。_Jenkins分布式构建与并行构建

Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是“masteragent(slave)”架构。Jenkins master负责提供界面、处理HTTP请求及管理构建环境;构建的执行则由Jenkins agent负责 Jenkins agent的横向扩容:只需要增加agent就…

使用ping命令检查路由之解惑

网络工程师都会用到Ping,它是 检查 路由问题的有效办法。但也常听工程师抱怨:不可能,怎么会不通呢? 这样的困惑一般发生在自认为路由设置正确的时候。举几个笔者遇到的问题,欢迎大家补充。 最简单的三种情况&#xff…

什么是慢查询?如何通过慢查询日志优化?

日志就跟人们写的日记一样,记录着过往的事情。但是人的日记是主观的(记自己想记的内容),而数据库的日志是客观的,根据记录内容分为以下好几种日志: a、错误日志:记录启动、运行或停止mysqld时出…

qstring去掉特定字符_如何花式、批量且操作简单地处理字符?

文本字符的规范化,是批量处理的前提。多来源数据或是数据收集本身就必然存在不规范情况,于是批量地完成它就成了常见的需求。对于花式批量处理,自然要说到正则表达式。“正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好…

动漫字幕组 集合

贪婪大陆被非法收购始末 http://blog.csdn.net/freexploit/archive/2005/11/21/534050.aspx预测已经实现~~还好还好先把各字幕组的论坛 地址找了来~~像什么 花园 漫游的这些 大家是熟悉的不能在熟悉了~~所以我就没打上去了~~有不全的请朋友们自己找找吧----------~.~而且现在几…

性能度量RMSE

回归问题的典型性能度量是均方根误差(RMSE:Root Mean Square Error)。如下公式。 m为是你计算RMSE的数据集中instance的数量。x(i)是第i个实例的特征值向量 ,y(i)是其label(期望的模型输出)。如下:X是包含了所有实例的…

最近幻影的两个ARP欺骗工具 挺不错的

arpspoof 3.1b主要功能:ARP欺骗过程中进行数据修改,实现会话劫持攻击说明: 本程序公开源代码,为了换取更多朋友的指教实例: 欺骗192.168.0.108访问百度网站的全过程(注:#后是我加的注释)效果: 1…

python中math库最大值_python-math库解析

math库的数学常数(共4个) math.pi 表示Π,圆周率,值为3.141592653589…… math.e 表示e,自然对数,值为2.718…… math.inf 表示正无穷大,负无穷大为-math.inf math.nan 表示非浮点数标记 math库…

idea启动项目没错,可是debug却一直启动不起来

原因很简单: 断电打的太多了导致的,去掉不需要的断点之后就好了! 转载于:https://www.cnblogs.com/sllcom/p/9327908.html

一个牛人的经历---北京八年——从极度贫困到财务自由

一个牛人的经历---北京八年——从极度贫困到财务自由 第一章: 八年巨变 我1996年7月从东北的一所曾经非常有名的工科大学毕业,快毕业时听了一位同乡校 友姐姐的话“宁到好地方,不到好单位”,经过一番各式各样的努力,96…

python绘制不带颜色曲线图_Python画曲线图

画图方法 from matplotlib import font_manager import numpy as np import matplotlib . pyplot as plt zh_fontfont_manager . FontProperties ( fnamerc:\windows\fonts\simsun.ttc , size14 ) # create a arr x1[ x * 0.5 for x in range( 1 , 20 )] y1x1 # create a arr x…

【数学建模】day02-整数规划

基本类似于中学讲的整数规划--线性规划中变量约束为整数的情形。 目前通用的解法适合整数线性规划。不管是完全整数规划(变量全部约束为整数),还是混合整数规划(变量既有整数又有实数),MATLAB都提供了通用的求解函数。 一、0-1型整数规划 这类规划将变量…