我想在每个月的第一个和第三个星期一开办一份工作。我使用的是CronTriggerBean,我尝试使用以下表达式进行配置,但我不能工作:
<property name="cronExpression" value="0 0 12 ? * MON#1,3 *" />
或
<property name="cronExpression" value="0 0 12 ? * MON#1,MON#3 *" />
第一个表达式仅在第一个星期一运行作业,而第二个表达式在第三个星期一运行作业。
有什么办法可以用CronTriggerBean实现这个目的吗?我使用带有XML配置的quartz-1.6.5,所以我不认为我可以配置SimpleTriggerBean来实现它。
答案 0 :(得分:1)
您将无法使用单个触发器bean执行此操作。您将需要创建2个单独的并使用调度程序注册它们:
<bean id="cronTriggerJobFirstMonday"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="YourQuartzJobBean" />
<property name="cronExpression" value="0 0 12 ? * MON#1 *" />
</bean>
<bean id="cronTriggerJobThirdMonday"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="yourQuartzJobBean" />
<property name="cronExpression" value="0 0 12 ? * MON#3 *" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerJobFirstMonday" />
<ref bean="cronTriggerJobThirdMonday" />
</list>
</property>
</bean>
答案 1 :(得分:1)
为什么不配置两个触发相同模块的Quartz-cron作业?
每个月的第一个星期一 - 0 0 12? 1/1 MON#1 *
每个月的第二个星期一 - 0 0 12? 1/1 MON#2 *