使用quartz任务调度框架,首先流程分为2个部分
第一部分为:用户手动新增任务
第二部分为:tomcat重启问题
从10月开始,到现在实现,无数大坑,写了改,改了写,期间也做了其他事情。不知为过。
第一部分为:用户手动新增任务
第二部分为:tomcat重启问题
tomcat重启之后,继续跑上面用户手动已经新增的任务流程,不需要用户在此进行新增任务,实际原理,就是新增。只不过代替人,程序自动新增,其中任务相关信息,已经在数据库中存储了,这时候,就需要监听器了。
实现思路
1. 定时任务管理Java类
1 | public class QuartzManager { |
2.监听器 SchedulerInitListener
当启动tomcat,spring容器会创建监听器
大概思路,
- 首先新建一个类,集成ApplicationListener,并且重写onApplicationEvent()方法。
- 查询job表所有的数据,返回结果集。
- 根据返回的数据,进行for循环,对其中的status字段进行判断,如果是Y,那就说明任务需要跑起来,否则。
- 在此对返回的数据中的job_type字段,也就是job类型进行判断,判断的意义在于,判断该任务是否需要参数,并且调用的方法会随之改变,也就是addJob()中的参数不同。
- 随后,调用addJob方法中,进行对job类调用,该job类是需要继承org.quartz.Job,并且重写execute()方法。
applicationContext-dao.xml添加
1 | <!-- 当Spring容器启动完成后执行下面的这个Bean --> |
监听器
1 | public class SchedulerInitListener implements ApplicationListener<ContextRefreshedEvent> { |
3.编写job类
大概思路
说白了,还是addJob方法调用的时候,传递参数大小的不同,进行job类的编写,这样才能应对下面2个问题。
- 当用户新增任务
- tomcat自启后,进行读取数据库中存入的信息。
1 |
|
4.job类中注入对象,SpringContextUtil编写
操作spring容器,获取bean对象
1 | public class SpringContextUtil implements ApplicationContextAware { |
余有不足,望指出。