00:00
今天我们来学习spring定时任务功能,定时任务呢一般会存在于中大型企业项目中,为了减少服务器数据库的压力,时间段的方式去完成某些业务逻辑视频put为我们内置任务,我们只需要一个注解就可以开启定时任务为我们所用了。通过A。和schedule的这两个注解来帮助我们完成,那么这两个注解具体长什么样,怎么用,我们来看一看。这个是ableching和schedule的。那么SC的作用是spring定时器,它可以实现定时执行一次或定时轮循执行一段代码,作用呢?在方法上面,那么enable schedule in呢?它是用于开启我们的spring定时器功能,它们两个是配套使用的。那么定时器的参数写法有两种,一种是基于CRO表达式的写法。
01:06
这段含义的意思是每两秒执行一次这段方法,那么下面的这种呢,是直接配置参数执行,这里的表示的意思是两两秒也是一样执行一次这个方法,那么这两种配置方式有一种不同的区别。以一种这种C表达式的配置方式呢,项目启动后,方法不会立刻执行,而是等到了执行的周期才会执行这个方法,比如说我们这里定义的是一个,呃,修改一下,比如说这里定义的是。十分,十点10:10的时候准时执行,那么在项目项目启动的时候呢,这段方法不会立即执行,而是当服务器时间到了10:10的时候才会执行这种方法,那么采用这种直接参数配置的方式呢,就是非C表达式的方式配置呢,在项目启动成功之后呢,会先立即执行一次这个方法,然后这里的配置是两秒嘛,当两秒之后还会再执行这个方法。
02:14
这就是这两种不同参数配置的区别。其实我这是一个测试类,测试类的方式去测试spring定时器的功能。那么我们先来看一看S的单元测试跑定时任务是种怎样的效果,我们具体先已经解释过了这两个C的表达式的区别。还有。他们具体将要实现的场景情况,我们跑一跑,看一看。点击run执行一下。
03:02
按照刚刚说的呢,这一段是不会执行的,因为他要10:10,我们现在的时间是晚上十一点半多了,那么这段方法呢,会立即执行,然后两秒之后又会重复执行,我们可以看一下程序的输出。好。可以看到schedule test2已经执行了。因为我们这个是单元测试嘛,所以这里只会跑一次。我们把休眠的时间休眠长一点,因为它是两秒执行一次,而我的程序在三秒就结束了,我们把它改成30秒。算了,改成六秒吧,六秒的话这里就会执行三次。直接参数配置的方式,它就会执行三次的程序输出,我们再来看一下。
04:03
同样的cron表达式的配置方式是不会执行的。可以看到。可以看到测试的运行结果,我们的schedule task2也就直接参数配置的方法执行了三次,因为程序让他要持续保持活跃状态六秒,那么我们如果把这个时间改一下哈。改成每时每分,每隔三秒执行一次的话,这个地方应该会执行两次的。到这个地方也就可以执行了。好,我们来看一下运行结果。这里没有schedule,看到没有,这个没有二的就是我们刚刚这个C基于C表达式的schedule的定时任务,那么他的的确确执行了两次。
05:08
而且他不是在程序运行之前执行的。程序是在什么时候启动的呢?我们可以看一下。程序启动完毕的时候是27分。27分的时候启动完了,那么在30分的时候他应该执行。啊,27秒,那么他在30秒的时候应该执行我们的这个任务。所以刚刚说的在项目启动后,方法不会立即执行,而是等执行周期到了才会执行方法这个实验是成功的。然后接下来我们还会再讲一些别的,那么呢,这期的视频介绍先到这里。
我来说两句