我有两个要求。
- 每周一触发作业
- 每月第一个星期一触发作业
对于第一个要求,我尝试了 @Scheduled(cron = "0 0 12 ? * MON")
和 @Scheduled(cron = "0 0 12 ? * 2")
。他们都没有工作。该函数没有被调用。
对于第二个要求,我尝试了 @Scheduled(cron = "0 0 12 ? 1/1 MON#1")
和 @Scheduled(cron = "0 0 12 ? 1/1 2#1")
。我收到以下错误。
Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'monthlyData': For input string: "2#1" ".
最佳答案
两个 cron 表达式都是有效的并且代表您编写的内容,现在,通过 XML 配置,以下示例似乎对我有用:
<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 class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerJobFirstMonday" />
</list>
</property>
</bean>
关于java - Spring 调度程序 Cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48151735/