您需要DAO/Repository
才能从您的存储中获取所有cronExpression。我在内存中创建DAO
@Repository
public class JobEntityDao {
public List<JobEntity> findAll() {
List<JobEntity> list = new ArrayList<JobEntity>();
JobEntity job1 = new JobEntity("0 0 12 * * ?");
JobEntity job2 = new JobEntity("0 15 10 ? * *");
JobEntity job3 = new JobEntity("0 15 10 * * ?");
list.add(job1);
list.add(job2);
list.add(job3);
return list;
}
}
和组件创建基于您的cronExpression石英调度程序。我把它叫做QuartzExecutor
@Service
public class QuartzExecutor {
private JobEntityDao jobEntityDao;
@Autowired
public QuartzExecutor(JobEntityDao jobEntityDao) throws ParseException, SchedulerException {
this.jobEntityDao = jobEntityDao;
init();
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private void init() throws ParseException, SchedulerException {
List<JobEntity> jobEntities = jobEntityDao.findAll();
for (JobEntity jobEntity : jobEntities) {
System.out.println(jobEntity.cronExpression);
RunMeTask task = new RunMeTask();
//specify your sceduler task details
JobDetail job = new JobDetail();
job.setName("runMeJob");
job.setJobClass(RunMeJob.class);
Map dataMap = job.getJobDataMap();
dataMap.put("runMeTask", task);
//configure the scheduler time
CronTrigger trigger = new CronTrigger();
trigger.setName("runMeJobTesting");
trigger.setCronExpression(jobEntity.cronExpression);
//schedule it
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
}
你可以从http://www.mkyong.com/java/quartz-scheduler-example/得到RunMeJob and RunMeTask
代码。 我知道班级设计不好,但我关心的是尝试解决你的问题。
这是你在找什么?
你真的想安排实体吗?在石英中,如果你想要的话,你可以安排一个任务并加载实体,或者如果你想重用实例,那么可以将它缓存在某个地方..这不够吗?我无法弄清楚需求..你能解释更多吗? – Premraj 2011-04-12 09:00:34
我实际上需要执行一些方法(以Job实体表示的方式),这将会知道一个Job ID - 这足够了 – 2011-04-12 09:07:16
您能否告诉我它的业务需求,以便您必须这样实现? – 2011-04-12 11:45:53