Spring Cache【娓娓道来】

目录​​​​​​​

1.自我介好😳😳😳

2.常用注解 💕💕💕

3.@EnableCaching🤦‍♂️🤦‍♂️🤦‍♂️

4.@CachePut🤷‍♀️🤷‍♀️🤷‍♀️

5.@CacheEvict🎶🎶🎶

6.@Cacheable 🤩🤩🤩


1.自我介好😳😳😳

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。

CacheManager是Spring提供的各种缓存技术抽象接口。

2.常用注解 💕💕💕

  • @EnableCaching开启缓存注解功能
  • @Cacheable在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
  • @CachePut将方法的返回值放到缓存中
  • @CacheEvict将一条或多条数据从缓存中删除

注意:在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。 

3.@EnableCaching🤦‍♂️🤦‍♂️🤦‍♂️

@EnableCaching 是启用缓存的注解,标注在任何一个可自动注入的类上即可开启。

@Slf4j
@SpringBootApplication
@EnableCaching
public class SpirngbootReidsApplication {public static void main(String[] args) {SpringApplication.run(SpirngbootReidsApplication.class, args);}}

4.@CachePut🤷‍♀️🤷‍♀️🤷‍♀️

  • @CachePut将方法的返回值放到缓存中

value:缓存的名称,每个缓存下面有多个key

key:缓存的key

 @CachePut(value = "userCache",key = "#result.userId")@PostMappingpublic User save(@RequestBody User user){userService.save(user);return user;}

5.@CacheEvict🎶🎶🎶

  • @CacheEvict将一条或多条数据从缓存中删除

value:缓存名称,每个缓存名称下面可以有多个key

key:缓存key

删除 

 @CacheEvict(value = "userCache", key = "#id")@DeleteMapping("/{id}")public void delete(@PathVariable("id") Integer id) {userService.removeById(id);}

修改

  @CacheEvict(value = "userCache",key = "#user.userId")@PutMappingpublic User update(@RequestBody User user) {userService.updateById(user);return user;}

6.@Cacheable 🤩🤩🤩

  • @Cacheable在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中

value:缓存名称,每个缓存名称下面可以有多个key

key:缓存key

condition:条件,满足条件时才缓存数据

unless: 满足条件,不缓存

   @Cacheable(value = "userCache", key = "#id", condition = "#result!=null")@GetMapping(value = "/{id}")public User get(@PathVariable("id") Integer id) {User user = userService.getById(id);return user;}
  @Cacheable(value = "userCache", key = "#id", unless = "#result==null")@GetMapping(value = "/{id}")public User get(@PathVariable("id") Integer id) {User user = userService.getById(id);return user;}

 

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

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

相关文章

php第三方skd自动加载

把mugou-sdk复制到项目下在composer.josn找到classmap加入sdk "autoload": {"classmap": ["mugou-sdk"] },在composer.josn找到files加入sdk "autoload": {"files":[mugou-sdk] },项目目录下运行 composer dump-autoload…

Python 从入门到精通 学习笔记 Day01

Python 从入门到精通 第一天 今日目标 计算机组成原理、编程语言、Python环境安装 第一个Python程序、PyCharm的安装与使用 Python的基础语法、Python的基本数据类型 一、计算机组成原理 计算机的组成 计算机硬件通常由以下几个部分组成: 1.中央处理器(CPU):负责执行计算机…

高防CDN:企业网络安全的坚实屏障

在当今数字化时代,企业网络面临着不断增长的网络威胁和攻击。为了维护企业在线业务的正常运行,高防CDN(Content Delivery Network)作为网络安全的坚实屏障,扮演着至关重要的角色。本文将从一家企业公司的角度出发&…

windows建立软链 报 无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

当我执行网上提供的mklink 的时候,出现 mklink : 无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。怎么回事,原来,要在执行的签名加 cmd /c 当我执行建立软链接时,提示 没有足够的权限,要用管理…

SE考研真题总结(一)

本帖开始分享考研真题中设计【软件工程】的部分,预计会出5期左右,敬请期待~ 一.单选题 1.程序编写不是软件质量保障过程~ 静态代码扫描是今年来多数被人提及的软件应用安全解决方案之一,指程序员在编写好代码后无需进行编译,直接…

【数据结构】—红黑树(C++实现)

🎬慕斯主页:修仙—别有洞天 💜本文前置知识: AVL树 ♈️今日夜电波:Letter Song—ヲタみん 1:36━━━━━━️💟──────── 5:35 …

深度学习毕设思路--yolov5的使用方法

1. 安装依赖项 确保你已经安装了以下依赖项: pip install -U -r requirements.txt 2. 数据准备 确保你有一个包含训练图像和相应标签的数据集。YOLOv5要求标签文件的格式为 YOLO 格式。 3. 训练模型 使用以下命令进行模型训练: python train.py --i…

WPS开发文档

WPS官网的WPS开放平台开发文档,摘抄一些以记录及作为文档的入口记录,以后对WPS表格的操作编程再也不是从网上搜索到的只字片语了^_^。 Workbook.SaveAs 在另一不同文件中保存对工作簿所做的更改。 语法 express.SaveAs(Filename, FileFormat, Passwo…

基于SpringBoot的大学活动平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着互联网技术的不断…

【C++】时间time库

time 文章目录 timetime_tstruct tm示例 linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。 time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点&…

天池SQL训练营(二)-SQL基础查询与排序

-天池龙珠计划SQL训练营 Task02:SQL基础查询与排序 SQL训练营页面地址:https://tianchi.aliyun.com/specials/promotion/aicampsql 一、SELECT语句基础 1.1 从表中选取数据 SELECT语句 从表中选取数据时需要使用SELECT语句,也就是只从表…

扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码

文章目录 1. 去噪扩散概率模型2. 前向扩散3. 反向采样3. 图像条件扩散模型4. 可以考虑改进的点5. 实现代码 话不多说,先上代码: 扩散模型diffusion model用于图像恢复完整可运行代码,附详细实验操作流程 令外一篇简化超分扩散模型SR3来实现图…

红队系列-内网横向

内网横向 渗透测试-内网横向MS-17010利用方法总结原理介绍漏洞利用MSFLadon 渗透测试-从公有云到内网漫游RCE-反序列化-frp0x01 前言0x02 前期打点0x03 想办法打内网0x04对上面的IP进行渗透0x05 愉快的内网漫游 windows凭据窃取MimikatzProcdumpGet-PassHashes.ps1 Windows远程…

75 内建函数对象-关系仿函数

#include <iostream> #include <string> #include <functional> #include <vector> #include <algorithm>using namespace std;//内建仿函数-关系仿函数 // 使用内建函数对象的时候&#xff0c;需要引入头文件 functionalvoid printVector(vecto…

08-中介者模式-C语言实现

中介者模式&#xff1a; Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.&#xff08;用一个中介对…

04 ECharts基础入门

文章目录 一、ECharts介绍1. 简介2. 相关网站3. HTML引入方式4. 基本概念 二、常见图表1. 柱状图2. 折线图3. 饼图4. 雷达图5. 地图 三、应用1. 动画2. 交互 一、ECharts介绍 1. 简介 ECharts是一个使用JavaScript实现的开源可视化库&#xff0c;用于生成各种图表和图形。 EC…

Mysql多表查询 思路 ——示例——sql顺序

参考练习题&#xff1a;https://blog.csdn.net/weixin_49627122/article/details/126380916 SQL顺序 在 SQL 查询中&#xff0c;SELECT 语句的执行顺序不是按照查询语句的书写顺序执行的&#xff0c;而是按照逻辑执行阶段来进行。一般来说&#xff0c;SQL 查询的执行顺序可以…

北斗网格二维编码

东经为 E —— east:东方 西经为 W —— west:西方 南纬为 S —— south:南方 北纬为 N —— north 将计算好的编码添加到列表中 my_list [1, 2, 3] my_list.append(4) 参考文献 一级北斗网格计算 高等地图学作业_已知经纬度求图幅编号_.Vector的博客-CSDN博客 其他级别…

spring面试题—— 事务

一&#xff1a;Spring事物是什么&#xff1f; spring事务的本质是底层数据库对事务的支持&#xff0c;spring并不直接管理事物&#xff0c;而是提供了多种事务管理器&#xff0c;具体的实现由持久化框架自己来做。 二&#xff1a;Spring为什么需要事物&#xff1f; add方法&…

如何使用jszip文件格式转换与批量打包成zip下载

文章目录 概要技术细节文件下载小结 概要 在前端开发中&#xff0c;我们经常需要处理文件的格式转换和下载。本文将介绍如何通过 JavaScript 实现将文件 URL 转换为 Blob 类型格式或者 arraybuffer 格式&#xff0c;并通过 JSZip 库实现文件的压缩和下载。 技术细节 先安装所…