Spring boot 集成 quartz 需要至少两个bean,一个trigger和一个jobDetail
package bj;
import org.quartz.*;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.time.LocalDateTime;
@SpringBootApplication
public class App implements ApplicationListener<ApplicationReadyEvent> {
public static void main(String[] args) {
new SpringApplicationBuilder(App.class).web(WebApplicationType.NONE).run(args);
}
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
System.out.println("ready");
}
public static class MyJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println(String.format("quartz jobbing %s", LocalDateTime.now()));
}
}
@Bean
public JobDetail jobDetail() {
return JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.storeDurably()
.build();
}
@Bean
public Trigger trigger() {
return TriggerBuilder.newTrigger().forJob(jobDetail())
.withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?"))
.build();
}
}