spring定时器用法详解

编程实验

72人已加入

描述

Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。下文为大家介绍spring定时器用法。

一、分类

1.作业类需要继承特定的类。特定的类有:

org.springframework.scheduling.quartz.QuartzJobBean;

java.util.TimerTask.

2.作业类就是自己定义的普通类。

作业类使用的触发时间的方式主要有两种。

1.在指定的时间调用。例如每天的每小时的15分,30分,45分,00分执行任务。

org.springframework.scheduling.quartz.CronTriggerBean

2.每隔一段时间就调用。比如每过10分钟就执行一次特定的任务。

org.springframework.scheduling.quartz.SimpleTriggerBean

二、定时任务的主要步骤

1.导包

定时器

2.编写任务类

定时器

3.配置文件中配置

定时器

解释:a:当容器加在该配置文件的时候,首先实例化任务调度工厂,调度工厂的triggers属性是一个list,里面存放

所有用户定义的任务。

b:找到这个任务后,会继续找到这个任务的配置,这里是延迟0秒执行调度,每隔1秒执行该任务,该任

务的名字是task1。

c:继而找到task1代表的真正的定义类,也就是图中配置文件中的第一个bean,其中的jobClass属性要写

执行任务类的完整路径,找到这个类之后会自动调用类中重写的那个方法,并且执行。

这种任务的触发方式是每隔一段时间触发,假如你想要在指定的特定时间触发,则需要这样配置:

定时器

仅仅是把上图中的第二个bean换成这种方式,另外需要注意的是,任务调度工厂中的任务列表

List中要加入该任务《refbean=“cronTrigger”/》。而原来被替换的simpleTrigger要注释掉。

但博文开始就说了任务分类有两种,这里只是继承特定的类这一种,还有一种就是作业类就是自己而不需要继承任何类。

这里需要解释的是,如果每次写作业类都需要硬性继承某个特定的类,就好像给代码“绑架”了一样,还要硬性去重写某个方法,

这个扩展性就太差了。所以就有了第二种,不需要你继承特定的类重写特定的方法,而是由你自由定义,之所以做到了这一点是因为这部分逻辑被抽离了出来,

写在了配置文件中。接下来就介绍这一种。

1.编写一个非常普通的类,没有任何继承,方法也是自己随便定义的。

定时器

2.配置文件

定时器

首先我把这个类当作普通bean对象写在配置文件中。之后非常重要的一个配置是MethodInvokingJobDetailFactoryBean,它有两个属性,一个是目标任务类对象,一个

是目标任务方法。注意这个方法value写的是方法名。不要有参数。

当任务调度工厂执行任务时,根据这个配置找到要执行的对象和方法。

最后把task加入到调度工厂的list中《refbean=“task”/》即可,除此之外还有一个更加简单的配置方法:

1.任务类

定时器

2.配置

定时器

这种方式非常的简洁,只需要配置task标签即可。但特别注意的前提是spring配置文件表头一定要加上:

xmlns:task=“http://www.springframework.org/schema/task”

xsi:schemaLocation=“

http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsd

http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-4.0.xsd”

这种方式不需要你把它配置到任务调度工厂中就可以执行。其实正如你看到的,scheduled-tasks标签

就相当于一个任务集合工厂,里面的《task:scheduled》才是一个个任务。

以上是我介绍的全部使用方式了。

任务类两种,一种是要继承和重写,一种自己定义普通类普通方法。

触发时间方式两种,一种间隔时间,一种指定特定时间。

当配置task标签来指定的时候,要注意配置文件头需添加一些关于task的声明标签。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分