gpt4 book ai didi

java - Spring quartz cron 作业到底是什么运行的?

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:46 25 4
gpt4 key购买 nike

好人。我正在尝试在一个由maven管理的非常简单的项目中使用quartz和spring。因此,在mycron作业类所在的模块中,我在其中包含了一个java主类,只是为了查看作业输出一些文本和新日期。这是我的 Spring 配置:

<!--Scheduling-->
<!--Job-->
<bean id="projUpdater" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.myproject.utilscheduling.quartz.ProjUpdaterCronImpl" />
</bean>
<!---End of Jobs-->
<!--Triggers-->
<bean id="regularUpdateTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="projUpdater"/>
<property name="cronExpression" value="30 1 * * * ?"/>
</bean>
<!--End ofTriggers-->
<!--Scheduler Factory-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="regularUpdateTrigger"/>
</list>
</property>
</bean>
<!--End of Scheduler Factory-->
<!--End of Scheduling-->

这是工作类别

public class ProjUpdaterCronImpl extends QuartzJobBean {

public ProjUpdaterCronImpl() {
}


protected void executeInternal (JobExecutionContext ctx) throws JobExecutionException {
System.out.println("[JOB] " + new Date() + "hello");
}

}

这是主类

public class NewMain {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("starting job");
}

}

因此,根据我的理解,该作业将在 1mn30s 后开始并发布在控制台上。我错了。我遇到了几个或解决的错误,因此我可以安全地假设 spring 配置文件中没有错误,因为构建和运行时没有错误。那么我做错了什么或我忘记做什么?

第二个问题是,因为我强制自己采用测试驱动的方式,所以我将如何测试 cron 作业类?感谢您的阅读

最佳答案

你的 cron 表达式

<property name="cronExpression" value="30 1 * * * ?"/>

实际上将触发器配置为每小时在整点后 1 分 30 秒触发一次。

Zoidberg 建议使用 MethodInvokingJobDetailFactoryBean允许您将 cron 作业编码为 POJO,使其易于测试。

关于java - Spring quartz cron 作业到底是什么运行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com