对于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("注解的方式测试啦!");
}
}
对于两种方式都可以实现定时任务,区别在于,在使用配置类(文件)的方式的时候,在项目启动的时候就会执行,使用注解的方式会在启动完成之后时间算起执行,少执行一次调度,有不对的或者补充的,欢迎哈。。。