2011-07-14 94 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