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中要加入该任务<ref bean= "cronTrigger" />。而原来被替换的simpleTrigger要注释掉。
但博文开始就说了任务分类有两种,这里只是继承特定的类这一种,还有一种就是作业类就是自己而不需要继承任何类。
这里需要解释的是,如果每次写作业类都需要硬性继承某个特定的类,就好像给代码“绑架”了一样,还要硬性去重写某个方法,
这个扩展性就太差了。所以就有了第二种,不需要你继承特定的类重写特定的方法,而是由你自由定义,之所以做到了这一点是因为这部分逻辑被抽离了出来,
写在了配置文件中。接下来就介绍这一种。