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秒触发一次

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值