--- Spring Boot 中的定时任务)
在 Spring Boot 中实现定时任务我们可以有两种选择一是 Spring 自带的定时任务处理器 Scheduled 注解另一种则是使用第三方框架 Quartz。下面我们分别对这两种方法进行模拟。1 定时任务处理器 Scheduled 注解首先我们在启动类添加 EnableScheduling 注解其中 EnableScheduling 注解提供对定时任务的支持。SpringBootApplicationEnableSchedulingpublicclassTestApplication{publicstaticvoidmain(String[]args){SpringApplication.run(TestApplication.class,args);}}然后我们创建一个类来实现定时任务功能。ComponentpublicclassScheduledTest{//fixedRate 表示两次任务的开始时间间隔Scheduled(fixedRate10000)publicvoidfixedRate(){System.out.println(fixedRate newDate());}//fixedDelay 表示本次任务结束到下次任务开始之间的时间间隔。Scheduled(fixedDelay4000)publicvoidfixedDelay(){System.out.println(fixedDelay newDate());}//initialDelay 表示首次任务启动的延迟时间Scheduled(initialDelay5000,fixedDelay2000)publicvoidinitialDelay(){System.out.println(initialDelay newDate());}}注意Scheduled 注解开启一个定时任务。且所有时间单位均为毫秒。测试结果如下2 Quartz 的使用在项目中若我们想要实现的功能比较简单可以使用 Scheduled 注解否则我们一般选择使用 Quartz 来实现定时任务。首先与 Scheduled 注解的使用方法相似在启动类添加 EnableScheduling 注解。SpringBootApplicationEnableSchedulingpublicclassTestApplication{publicstaticvoidmain(String[]args){SpringApplication.run(TestApplication.class,args);}}添加 Quartz 的依赖dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-quartz/artifactId/dependency我们先创建一个任务类需要继承 QuartzJobBeanComponentpublicclassJobextendsQuartzJobBean{//执行定时任务OverrideprotectedvoidexecuteInternal(JobExecutionContext context)throwsJobExecutionException{System.out.println(I want to do something!newDate());}}然后我们再创建一个配置类ConfigurationpublicclassQuartzConfig{// 配置定时任务BeanpublicJobDetailtestQuartzDetail(){returnJobBuilder.newJob(Job.class).withIdentity(Job).storeDurably().build();}// 配置定时任务的触发器也就是什么时候触发执行定时任务Bean(namejobTrigger)publicTriggertestQuartzTrigger(){SimpleScheduleBuilder scheduleBuilderSimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(3)// 设置时间周期单位秒.repeatForever();returnTriggerBuilder.newTrigger().forJob(testQuartzDetail()).withIdentity(Job).withSchedule(scheduleBuilder).build();}}程序运行如下参考Spring Boot 中实现定时任务的两种方式