SpringCache和SpringTask

SpringCache

在启动类上加EnableCaching注解

我们只要在Controller上写一个SpringCache相应的注解

我们就能实现缓存了

简化缓存操作代码,提高我们的效率

我们默认是我们的spring做缓存

但我们还可以替换我们的缓存技术

例如

EhCache

Google

Redis

来作为缓存技术

 


我们是通过这个接口,CacheManager接口来实现的


4个常用注解 


有三个注解

Cacheput

CacheEvict

CacheEnable


使用Cacheput注解

我们添加缓存时使用

我们在这个Controller中

注入了我们的CacheManager对象

我们在启动类上加了EnableCaching注解

我们在新增操作上写这个,然后value是这个缓存的名称

 

可以存很多的缓存在一个value

然后我们有个key,来作为表示

 #result

我们的key可以通过spring内置语言来写,#result,就是我们当前方法的返回值

#root

可以获取到当前的这个方法

拿到参数值

我们可以和参数名对应,然后来拿到它的参数值

 存储于内存

其实我们这个存储是基于内存的,重启服务后我们就没有了

使用CacheEvict注解

我们删除缓存的时候用

#root.args[0]

 获得方法的第几个参数

#p0

也可以用p0这种写法,指定时第几个参数


使用CacheEnable

这个用在我们的查询方法上

查询之前看看我们有没有

存入空缓存

这个很吊,如果我们过来,然后我们查询数据库为空

condition

condition是满足什么条件的时候,我们才缓存


 使用Spring内置语言的小问题

其实我们这里是不能使用Result的

Cacheable()里面的condition使用的内置对象只有root,和一些参数(这个参数有使用限制)

我们使用condition的时候,我们Spring内置对象不能使用返回结果#result

所以我们可以使用unless,这个和condition相反

我们就可以使用#result了


技术换型,使用Redis

首先要引入我们的依赖

Spring-boot-starter-cache依赖

配置yml文件

设置缓存有效期

我们可以直接在配置文件中,配置time-tolive来设置这个缓存的有效期

我们这样就把我们底层缓存的产品换成了Redis


SpringTask

SpringTask是什么

springtask是spring框架的一个定时任务

是spring提供的任务调度工具,按照约定的时间自动执行某个代码逻辑

作用:定时自动执行某段java代码

例如闹钟


应用场景

信用卡提醒还贷

花呗提醒还款

火车票售票系统处理未支付订单

纪念日发送通知


Cron表达式

我们的springtask要写我们的cron表达式

定时任务触发


什么是Cron表达式

 

通常

周和日是很难同时确定的,所以我们这两个

如果另一个确定了另一个就填写❓

但还是有问题,例如我们想要2月份的最后一天

是28还是29?

我们直接写的话肯定不好,会出错的

但是为了描述这种具体的细节呢,我们会有一些特殊的字符

我们没必要去手写我们的cron表达式,我们有cron表达式自动生成的网站


入门案例

添加EnableScheduling注解

在启动类上添加我们的EnableScheduling注解,开启我们的任务调度

我们的定时任务类上要加我们的Componet注解

这样我们才能成功使用Shceduled注解(写我们的Cron表达式)

然后定义我们的方法,我们的方法是void类,是没有返回值的


需求分析(经典使用)

我们一分钟检查一次,看看是否有超时订单

我们的订单不可能一直时派送状态

过了一定的时间我们要处理一下这个状态

 

我们写sql语句,查出超时15分钟的订单,然后把订单状态设置成已经取消

plusMinute方法

LocalDateTime有个plusMinute方法,可以加减时间

为了防止日志同时输出,控制台很难观察

 修改程序启动时,我们的定时任务的启动时间

所以我们一个从1秒开始,5秒触发一次

一个从0秒开始,5秒触发一次

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

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

相关文章

MAVEN:自定义模板Archetype的创建

目录 一、简介 二、具体步骤 三、 vscode通过模板创建项目 四、通过IDEA创建 一、简介 有时候MAVEN自带的模板库并不能满足我们创建项目的需求,为了能够快速创建项目,免去每次复杂的配置,所以我们需要自定义模板库,本次操作基于…

Linux 性能优化基础

文章目录 常见指标分类(USE法)常见性能工具CPU性能工具内存性能工具文件系统和磁盘I/O性能工具网络性能工具 根据指标找工具CPU性能内存性能文件系统和磁盘I/O网络性能 根据工具找指标CPU性能内存性能文件系统和磁盘I/O网络性能 CPU性能分析一般步骤内存…

【C++题解】1254. 求车速

问题:1254. 求车速 类型:简单循环 题目描述: 一辆以固定速度行驶的汽车,司机在上午 10 点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859 。 两小时后里程表上 出现了一个新的…

不明确的unicode字符

不明确的unicode字符 起因:一个Demo源码,也不知道是用什么编辑器编的,中文注释非常全面。就打算原来的基础上改改就用,特别是里面大量接口、类的定义,真没必要重写。但是在VS Code里面打开,出现“本文档包含…

k-means聚类模型的优缺点

一、k-means聚类模型的优点 1. 简单高效:k-means算法思想简单直观,易于实现。它通过迭代计算样本点与聚类中心之间的距离,并不断调整聚类中心的位置,直至满足终止条件。由于其计算过程相对直接,所以具有较高的执行效率…

控制台输入javac命令输出的结果中的中文乱码解决方式

默认字符编码UTF-8无法解析中文。设置环境变量中 “JAVA_TOOL_OPTIONS” 的值为"UTF-8" 即可。 具体配置步骤: 桌面右键"我的电脑" --> 属性 高级系统设置 环境变量 用户变量中添加 JAVA_TOOL_OPTIONS 然后确定,保存即可。

阿里云一键登录号码认证服务

阿里云文档:号码认证SDK_号码认证服务(PNVS)-阿里云帮助中心 对于后端大概流程 前端App会传一个token过来 后端通过下面方法解析 如果解析可以获得号码,说明号码认证成功,如果无法正确解析则认证失败 /*** actoken来换取电话号码* param token app端用户授权actok…

WDF驱动开发-PNP和电源管理(二)

下面是一种比较典型的 PnP 和电源管理方案,WDF框架在这些情况下调用驱动程序的事件回调函数: 用户插入设备用户拔出设备设备进入低功耗状态设备回到工作状态PnP 管理器重新分发系统资源 这些几乎是所有的和PNP、电源管理相关的场景了,它们分…

达梦8 网络中断对系统的影响

测试环境:三节点实时主从 版本:--03134283938-20221019-172201-20018 测试1 系统没有启动确认监视器 关闭节点3网卡 登录节点1检查主库状态 显示向节点2发送归档成功,但无法收到节点3的消息,节点1挂起 日志报错如下&#xf…

易于上手的requests

Python中的requests库主要用于发送HTTP请求并获取响应结果。在现代网络编程中,HTTP请求是构建客户端与服务器之间通信的基础。Python作为一种高级编程语言,其丰富的库支持使得它在网络数据处理领域尤为突出。其中,requests库以其简洁、易用的…

力扣560. 和为 K 的子数组

Problem: 560. 和为 K 的子数组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.初始化一个哈希表preSum,用于记录前缀和及其出现次数,ans记录和为k的子数组数量、sum_i记录当前前缀和; 2.将前缀和为 0 的情况存入哈希表,表示前缀和为 0 出…

【Python】认识 Python

一、计算机基础概念 1、什么是计算机 很多老一辈的人,管下面这个叫做计算机。然而,它只是 “计算器”,和计算机是有很大区别的。 现在我们所说的计算机,不光能进行算术运算,还能进行逻辑判断、数据存储、网络通信等…

遇到no module named ‘pyLDAvis.sklearn‘的解决办法

在NLP学习中,常常用到LDA主题模型对文本进行分类,可视化经常用到的代码有 import pyLDAvis import pyLDAvis.sklearnpanel pyLDAvis.sklearn.prepare(lda, tf_idf, tf_idf_vectorizer) pyLDAvis.save_html(panel, lda_visualization.html) pyLDAvis.di…

HTML静态网页成品作业(HTML+CSS)—— 节日母亲节介绍网页(5个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…

骑砍2霸主MOD开发(12)-游戏实例GameEntity

一.GameEntity游戏实例 <1.通用GameEntity,梯子,椅子,攻城云梯,战车等定义为GameEntity,一个GameEntity由若干GameEntityComponets组成,例如攻城云梯的轮子是一个独立Component,支架是一个独立Component, GameEntity GameEntityComponent1 GameEntityComponent2 GameEntit…

前端开发之WebSocket通信

WebSocket WebSocket是一种在单个TCP连接上进行全双工通信&#xff08;双向同时通信&#xff09;的协议&#xff0c;它允许服务器和客户端之间自由地交换数据&#xff0c;无需反复建立连接。其特点包括&#xff1a; 双向通信&#xff1a;实时性强&#xff0c;支持服务器向客户…

移动端前端开发遇到过的Andorid和IOS的差异记录

移动端前端开发遇到过的安卓和苹果的差异记录 1. 引入外部资源&#xff0c;最好用https2. IOS时间戳获取NaN问题3. 金额三位分节显示方式4. .webp图片支持问题 1. 引入外部资源&#xff0c;最好用https ios处于安全性的考虑&#xff0c;不大支持http引入外部资源&#xff0c;所…

【kubernetes】探索k8s集群的配置资源(secret和configma)

目录 一、Secret 1.1Secret 有四种类型 1.2Pod 有 3 种方式来使用 secret 1.3应用场景&#xff1a;凭据 1.4创建 Secret 1.4.1用kubectl create secret命令创建Secret 1.4.2内容用 base64 编码&#xff0c;创建Secret 1.4.2.1Base64编码 1.4.2.2创建YAML文件 1.4.2.3…

《计算机网络》

计算题【33】 题目:假设一个有噪声信道的带宽为3KHz,信噪比为30dB,则该信道的最大数据传输速率是多少? C = W log2(1+S/N)(bit/s)=3000Hz* log2(1+30)= 29.9kbps 题目:一个网络中,设定的IP地址范围是:172.88.32.1至172.88.32.254,试确定其合适的子网掩码。 分析第…

「前端+鸿蒙」鸿蒙应用开发预览模拟器运行

在鸿蒙应用开发中&#xff0c;预览和模拟器运行是开发流程中的重要环节&#xff0c;它们允许开发者在不使用实体设备的情况下测试应用的界面和功能。以下是如何使用华为DevEco Studio进行预览和在模拟器上运行鸿蒙应用的详细步骤&#xff0c;以及相应的示例代码。 快速体验-预览…