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

发布于 2024-11-24 16:42:34 字数 147 浏览 1 评论 0原文

我使用 org.springframework.scheduling.quartz.CronTriggerBean 来进行触发作业。

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

I'm using org.springframework.scheduling.quartz.CronTriggerBean for trigger job.

Could you propose cron expression to trigger job execution only once on application startup pls?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

盛装女皇 2024-12-01 16:42:34

我相信真正的答案是:不,你不能。
然而,当使用 Spring 3.1(在撰写本文时为 Milestone 2)时,您可以做的是创建 配置文件,可以针对不同的环境启用。因此,您可以根据启用的配置文件使用不同的 bean 和 bean 配置。

I believe the actual answer is: no, you can't.
What you could do however when using Spring 3.1 (which is Milestone 2 at the time of writing) is create profiles which can be enabled for different environments. So you can use different beans and bean configurations depending on profiles you enable.

避讳 2024-12-01 16:42:34

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

Instead of using scheduling, I would prefer to invoke your trigger via defining an init-method in your spring configuration

洋洋洒洒 2024-12-01 16:42:34

要使用 Spring Quartz 调度程序在启动时仅运行一次作业,您可以使用 org.springframework.scheduling.quartz.SimpleTriggerBean ,它不采用 cronExpression 而是采用 startDelay和一个repeatCount。将 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 文档:第 22 章。使用 Quartz 或 Timer 调度作业

To run a job only once at startup with the Spring Quartz scheduler you can use the org.springframework.scheduling.quartz.SimpleTriggerBean which doesn't take a cronExpression but a startDelay and a repeatCount. Set the repeatCount to 0 for a single execution (see Quartz documentation on SimpleTrigger for further options).

<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>

Additional information can be found int the
spring documentation: Chapter 22. Scheduling jobs using Quartz or Timer

暮年慕年 2024-12-01 16:42:34

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

You can use a SimpleTriggerBean - with a cron expression, you won't achieve this

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文