我正在使用Spring / Quartz调度作业。
我的SchedulerFactoryBean
:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="testJob1" />
<ref bean="testJob2" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="testJob1Trigger" />
<ref bean="testJob2Trigger" />
</list>
</property>
</bean>
我想安排的工作数量各不相同,所以我想将它们作为代码列表添加。
基本上我现在有testJob1
和testJob2
个工作。
如何在不触及XML的情况下添加testJob3
,testJob4
等?
是否可以动态定义作业和触发器列表?
我的意思是这样的:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="anArrayListOfJobs" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="anArrayListOfTriggers" />
</list>
</property>
</bean>
答案 0 :(得分:0)
您可以动态定义作业和触发器,并动态安排作业。
// Create Job
JobDetailFactoryBean JobDetail = new JobDetailFactoryBean();
jobDetail.setJobClass(ScheduledJob.class);
jobDetail.setName("reportJob1");
jobDetail.setDurability(true);
jobDetail.setJobDataMap(new JobDataMap());
jobDetail.afterPropertiesSet();
// create CRON Trigger
CronTriggerFactoryBean trigger = new CronTriggerFactoryBean();
trigger.setBeanName("UniqueCronBeanName");
trigger.setGroup("uniqueCronGroup");
trigger.setJobDetail(jobDetail.getObject());
trigger.setCronExpression("0 0 12 * * ?");
trigger.afterPropertiesSet();
然后,您可以通过将其设置为已定义的调度程序工厂来安排作业。
schedulerFactoryBean.getScheduler().scheduleJob(jobDetail.getObject(), trigger.getObject());