對於Quartz的使用,還是想說一句,SpringBoot真的很好用啊!
第一步:當然是引入依賴啦
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <!-- quartz --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
第二步:創建你的調度任務啊,繼承 QuartzJobBean,然后重寫方法(自己根據需求編寫業務邏輯)
public class FileHandleQuartz extends QuartzJobBean{ private Logger logger = LoggerFactory.getLogger(FileHandleQuartz.class); @Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { logger.info("定時任務執行啦!"); } }
第三步:當然要配置了
@Configuration public class QuartzConfiguration { @Bean public JobDetail jobDetail() { return JobBuilder.newJob(FileHandleQuartz.class) .withIdentity("fileHandleQuartzJobDetail") //自己取名 .storeDurably().build(); } @Bean public Trigger trigger() { SimpleScheduleBuilder schedBuilder=SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever(); //時間自己定,根據方法進行修改時間 return TriggerBuilder.newTrigger().forJob( jobDetail()).withIdentity("fileHandleQuartzJobTriger") //自己取名 .withSchedule(schedBuilder).build(); } }
當然啦,如果想用cron表達式的,直接歡迎Schedule就好
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("*/5 * * * * ?"); //替換上面的第一行就好
第二種通過注解的方式:
@EnableScheduling @Configuration public class QuartzAnnotationTest { private Logger logger = LoggerFactory.getLogger(QuartzAnnotationTest.class); @Scheduled(cron = "*/5 * * * * ?") public void testAnnotation(){ logger.info("注解的方式測試啦!"); } }
對於兩種方式都可以實現定時任務,區別在於,在使用配置類(文件)的方式的時候,在項目啟動的時候就會執行,使用注解的方式會在啟動完成之后時間算起執行,少執行一次調度,有不對的或者補充的,歡迎哈。。。