Quartz框架执行的任务需要写在一个实现Job接口的类中,在实现类中的execute(JobExecutionContext context)中执行相关的操作,通过实现Job接口来使你的Java 组件可以很简单的被scheduler执行,下面是job接口:
如上,你会看到job触发器出发时,job的execute方法会被执行。那么,scheduler的job是通过何种方式创建和执行的呢。先来看看job的部署,job是通过jobdetail scheduler到框架中去的,然后通过getJobClass()方法获取到job实现类的class字节码的,通过jobFactory的newJob()方法反射出Java 的具体实例,然后在JobRunShell线程对象的run方法中执行。
1、 先看看jobdetail的创建,在quartz2.0中,jobdetail是通过jobbuilder创建
Jobbuilder通过静态方法newjob()不同重载来创建Jobbuilder,通过withIdentity()重载设置参数,如下:
2、 创建号jobdetail后,scheduler通过线程类JobRunShell来执行Job。
通过initialize方法中调用JobFactory的newJob()创建Job实例。
JobFactory的newJob()方法通过反射使用默认无参数的构造方法实现job实例创建,如下:
Job的执行很简单,直接调用execute方法即可,以下代码省略中间检查部分:
Job的实现和执行很简单, 主要是业务逻辑,以下简单的把类之间的关系整理下: