Quartz源码分析之Job
2016-03-23 22:29
465 查看
Quartz首当其冲就是Job类,这个接口主要描述了需要执行job的逻辑,所有的job都要实现Job接口。
Job接口定义如下:
之所以定义一个execute方法来所有的job来实现,是因为这样可以被框架来统一调用。
JobDetail接口,用于描述job的具体信息,主要字段定义如下:
JobDetailImpl类,这个类是JobDetail接口的具体实现,用于记录需要执行job的信息:
这些信息用于记录job的名称,描述,组信息(一般都是default),job关联的数据,JobKey的实现主要是name和group。用于唯一标识一个job。
JobBuilder类用于描述JobDetail的构造过程:
字段定义如下:
这些字段和JobDetail类的字段一样,这些字段用于构造JobDetail类。
通过之前的示例可以看到首先调用了newJob方法返回JobBuilder对象,方法如下:
这个方法主要是设置了需要执行的job class。再看设置其他字段信息的逻辑:
这里设置了job需要执行的接口,描述,key等信息。最后返回一个JobDetailImpl 对象。到这里为止,一个Job类的构造就算结束了。
Job接口定义如下:
void execute(JobExecutionContext context) throws JobExecutionException;
之所以定义一个execute方法来所有的job来实现,是因为这样可以被框架来统一调用。
JobDetail接口,用于描述job的具体信息,主要字段定义如下:
public JobKey getKey(); public String getDescription(); public Class<? extends Job> getJobClass(); public JobDataMap getJobDataMap(); public boolean isDurable();
JobDetailImpl类,这个类是JobDetail接口的具体实现,用于记录需要执行job的信息:
private String name; private String group = Scheduler.DEFAULT_GROUP; private String description; private Class<? extends Job> jobClass; private JobDataMap jobDataMap; private boolean durability = false; private boolean shouldRecover = false; private transient JobKey key = null;
这些信息用于记录job的名称,描述,组信息(一般都是default),job关联的数据,JobKey的实现主要是name和group。用于唯一标识一个job。
JobBuilder类用于描述JobDetail的构造过程:
字段定义如下:
private JobKey key; private String description; private Class<? extends Job> jobClass; private boolean durability; private boolean shouldRecover; private JobDataMap jobDataMap = new JobDataMap();
这些字段和JobDetail类的字段一样,这些字段用于构造JobDetail类。
通过之前的示例可以看到首先调用了newJob方法返回JobBuilder对象,方法如下:
public static JobBuilder newJob(Class <? extends Job> jobClass) { JobBuilder b = new JobBuilder(); b.ofType(jobClass); return b; } public JobBuilder ofType(Class <? extends Job> jobClazz) { this.jobClass = jobClazz; return this; }
这个方法主要是设置了需要执行的job class。再看设置其他字段信息的逻辑:
JobDetailImpl job = new JobDetailImpl(); job.setJobClass(jobClass); job.setDescription(description); if(key == null) key = new JobKey(Key.createUniqueName(null), null); job.setKey(key); job.setDurability(durability); job.setRequestsRecovery(shouldRecover); if(!jobDataMap.isEmpty()) job.setJobDataMap(jobDataMap); return job;
这里设置了job需要执行的接口,描述,key等信息。最后返回一个JobDetailImpl 对象。到这里为止,一个Job类的构造就算结束了。
相关文章推荐
- 从源码安装Mysql/Percona 5.5
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 浅析Ruby的源代码布局及其编程风格
- asp.net 抓取网页源码三种实现方法
- JS小游戏之仙剑翻牌源码详解
- JS小游戏之宇宙战机源码详解
- jQuery源码分析之jQuery中的循环技巧详解
- 本人自用的global.js库源码分享
- java中原码、反码与补码的问题分析
- PHP网页游戏学习之Xnova(ogame)源码解读(六)
- C#获取网页HTML源码实例
- PHP网页游戏学习之Xnova(ogame)源码解读(八)
- PHP网页游戏学习之Xnova(ogame)源码解读(四)
- JS小游戏之极速快跑源码详解
- JS小游戏之象棋暗棋源码详解
- android源码探索之定制android关机界面的方法
- 基于Android设计模式之--SDK源码之策略模式的详解
- Android游戏源码分享之2048
- C语言借助EasyX实现的生命游戏源码