讲这个之前,我们先讲讲定时器。
从实现技术上来看,定时器分为三种:
1.Timer比较单一,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行,一般用的较少。
2.Quartz是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来有些复杂。
3.Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。
从作业类继承分类主要分为两类:
1.作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要继承自java.util.TimerTask。
2.作业类即普通的java类,不需要继承自任何基类。
从任务调度的触发机制来分,主要有以下两种:
1.每隔指定时间则触发一次,在Quartz中对应的触发器为:org.springframework.scheduling.quartz.SimpleTriggerBean
2.每到指定时间则触发一次,在Quartz中对应的调度器为:org.springframework.scheduling.quartz.CronTriggerBean
现在,我们讲讲Spring3.0的task,<task:annotation-driven/>
的作用就是开启定时器开关,自动扫描程序中带注解的定时器,不过,要让他起作用还需要以下配置:
首先在配置文件头部的必须要有:
xmlns:task="http://www.springframework.org/schema/task"
其次xsi:schemaLocation必须为其添加:
xsi:schemaLocation=" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"
然后spring扫描过程必须涵盖定时任务类所在的目录: