从零开始在Spring中使用定时器

时间:2023-01-14 00:14:49

在Spring中常常使用定时器去完成一些定时任务,比如每天清除某些缓存等,Spring中常见的定时器有两种,一种是比较原生的,一种是结合Quzrt框架。

第一种方便,配置少,随时可用 

第二种比较全面,配置比较复杂 侵入性比较低

先从原生的学起,比较好理解

1.搭建spring基础框架使项目能运行。

2.配置spring-servlet.xml

 从零开始在Spring中使用定时器

尤其是图中前两个地方

3.在被扫描的包下创建任意一个类,添加注解,使其被spring扫描,如图:

注意要加上注解@DependsOn

 从零开始在Spring中使用定时器

被注入的两个servicce基本类似:

 从零开始在Spring中使用定时器

 从零开始在Spring中使用定时器

4.运行项目就可以看到效果:

 从零开始在Spring中使用定时器

另外一个结果:

 从零开始在Spring中使用定时器

5.总结:这个简单的事例能说明如下几点:

1.定时器通过注入调用其他service

2.可以注入多个

3.默认的定时器任务是单线程串行的

4.目前还没发现如何控制定时器的先后顺序,取巧的方法就是通过一个变量来控制

5.通过第二种结果,说明两个定时器的执行顺序是随机的

6.注意点:多个定时器时,如果有定时器未按时执行,可能的原因是:由于多个定时器是串行执行的,上一个定时器执行的时间太长,导致下一个定时器无法按时执行

 

 

 

 

第二种:

下载quartz.jar

配置spring-servlet.xml

 从零开始在Spring中使用定时器

最后一个行就是目标方法。

 从零开始在Spring中使用定时器

总结:这种方式最大的优点就是侵入性低,被定时执行的方法完全是一个普通方法。

注意点:定时器使用时注意spring启动的顺序,一定要在bean注入完毕后再

执行定时器(指如果定时器中需要注入时),顺序错了可能会报:

 从零开始在Spring中使用定时器