我正在尝试将quartz scheduler添加到我的springboot应用程序中,以便每天晚上12点运行cron job。这是我的配置
@Bean
public JobDetailFactoryBean demoJob() {
JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
jobDetailFactory.setJobClass(DemoJob.class);
jobDetailFactory.setDurability(true);
return jobDetailFactory;
}
@Bean
public CronTriggerFactoryBean demoTrigger(
@Qualifier("demoJob") JobDetail jobDetail) {
CronTriggerFactoryBean trigger = new CronTriggerFactoryBean();
trigger.setJobDetail(jobDetail);
trigger.setCronExpression("0 0 0 * * ?");
trigger.setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING);
return trigger;
}
@Bean
public SpringBeanJobFactory springBeanJobFactory() {
AutoWiringSpringBeanJobFactory jobFactory = new AutoWiringSpringBeanJobFactory();
jobFactory.setApplicationContext(applicationContext);
return jobFactory;
}
现在,除了每晚运行此项目外,每次运行此项目时都需要触发此作业。我试着设置
trigger.setStartTime(new Date());
trigger.setStartDelay(1);
但它并不触发每次我运行这个项目。我可以设置这个配置或者必须在我的方法符号上使用@Postconstructor
吗?
1条答案
按热度按时间nbysray51#
您可以在Sping Boot 中实现事件侦听器。对于您的目的,您可以坚持使用
ApplicationReadyEvent
,正如其名称所示,它在应用程序准备就绪时被触发。例如: