Spring Scheduler Cron Job

时间:2018-01-08 13:53:34

标签: java spring cron quartz-scheduler spring-scheduled

我有两个要求。

  1. 每个星期一触发工作
  2. 每个月的第一个星期一触发工作
  3. 对于第一个要求,我尝试了@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")。我收到以下错误。

      

    引起:java.lang.IllegalStateException:遇到无效的@Scheduled方法'monthlyData':对于输入字符串:“2#1”“。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

希望这会对你有所帮助

每个星期一 - (0 0 12?* MON)[sec min hour dayOfmonth month dayofweek]

每个月的第一个星期一 - (0 0 12?* 2#1) - 它会在每个月的第一个星期一12点触发事件