Cron表达式在应用程序启动时运行一次作业

时间:2011-07-14 15:13:29

标签: java spring quartz-scheduler

我正在使用org.springframework.scheduling.quartz.CronTriggerBean作为触发器作业。

您是否可以建议 cron表达在应用程序启动时仅触发一次作业执行

4 个答案:

答案 0 :(得分:2)

我相信实际答案是:不,你不能。 但是,在使用Spring 3.1(编写本文时为Milestone 2)时,您可以执行的操作是创建profiles,可以针对不同的环境启用它。因此,您可以根据启用的配置文件使用不同的bean和bean配置。

答案 1 :(得分:1)

我宁愿通过在spring配置中定义init-method来调用触发器,而不是使用调度

答案 2 :(得分:1)

要在启动时使用Spring Quartz调度程序仅运行一次作业,您可以使用org.springframework.scheduling.quartz.SimpleTriggerBean,它不会使用cronExpression而只需startDelayrepeatCount。将repeatCount设置为0进行单次执行(有关更多选项,请参阅SimpleTrigger上的Quartz文档)。

<bean id="doJobOnceOnStartupTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail" ref="myJobDetail" />
    <property name="startDelay" value="5000" />
    <property name="repeatCount" value="0" />   
</bean>

<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="myBean" />
    <property name="targetMethod" value="myMethod" />
</bean>

其他信息可以在 spring documentation: Chapter 22. Scheduling jobs using Quartz or Timer

答案 3 :(得分:0)

您可以使用SimpleTriggerBean - 使用cron表达式,您将无法实现此