2011-07-14 55 views
1

我正在使用org.springframework.scheduling.quartz.CronTriggerBean作为触发器作业。Cron表达式在应用程序sturtup上运行作业

你能提出cron表达式对应用程序启动请触发作业执行只有一次?

+3

嗯发现,为什么使用调度作业是否要被一次触发? –

+0

我有我的应用程序要部署到不同的环境。在开发环境中,我只想运行一次作业,并且想要相应地更改我的配置文件。 –

回答

2

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

1

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

+0

辉煌的为我工作:) – Mark

1

要在启动时使用Spring Quartz调度程序只运行一次作业,您可以使用不带cronExpression但startDelayrepeatCountorg.springframework.scheduling.quartz.SimpleTriggerBean。将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> 

的更多信息,INT的 spring documentation: Chapter 22. Scheduling jobs using Quartz or Timer