mixkitcom素材网站,西安网站建设 至诚,网站用什么软件做,化妆品网站制作需要文章目录 1. 使用Scheduled注解1.1 时间间隔执行1.2 固定时间点执行 2. 使用EnableScheduling注解启用定时任务3. 实现SchedulingConfigurer接口4. 使用Quartz框架4.1 配置QuartzScheduler4.2 定义Job类和Trigger类 5. 总结 在开发现代应用时#xff0c;定时任务是一个非常常见… 文章目录 1. 使用Scheduled注解1.1 时间间隔执行1.2 固定时间点执行 2. 使用EnableScheduling注解启用定时任务3. 实现SchedulingConfigurer接口4. 使用Quartz框架4.1 配置QuartzScheduler4.2 定义Job类和Trigger类 5. 总结 在开发现代应用时定时任务是一个非常常见的需求。无论是数据清理、数据同步、报表生成还是其他周期性任务都可以通过定时任务来实现。Spring框架为我们提供了多种实现定时任务的方式让我们可以根据项目的需求和特点来选择合适的方式。 1. 使用Scheduled注解
Spring的Scheduled注解是一种非常简单和便捷的实现定时任务的方式。通过在方法上添加Scheduled注解我们可以指定方法在特定的时间间隔或固定的时间点执行。
1.1 时间间隔执行
Component
public class ScheduledTasks {Scheduled(fixedRate 5000) // 每隔5秒执行一次public void task1() {// 定时任务逻辑}Scheduled(fixedDelay 10000) // 上次执行结束后延迟10秒再执行public void task2() {// 定时任务逻辑}Scheduled(initialDelay 5000, fixedRate 10000) // 延迟5秒后每隔10秒执行一次public void task3() {// 定时任务逻辑}
}1.2 固定时间点执行
Component
public class ScheduledTasks {Scheduled(cron 0 0 0 * * ?) // 每天零点执行public void task4() {// 定时任务逻辑}Scheduled(cron 0 0 12 * * MON-FRI) // 每个工作日中午12点执行public void task5() {// 定时任务逻辑}
}2. 使用EnableScheduling注解启用定时任务
除了在定时任务类中直接使用Scheduled注解外我们还可以通过在主类上添加EnableScheduling注解来启用定时任务功能。
SpringBootApplication
EnableScheduling
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}然后在定时任务类中使用Scheduled注解定义定时任务方法与之前的方式相同。
3. 实现SchedulingConfigurer接口
如果我们需要更灵活地配置定时任务比如动态地改变定时任务的执行频率或者添加多个定时任务可以通过实现SchedulingConfigurer接口来实现。
Configuration
EnableScheduling
public class ScheduledConfig implements SchedulingConfigurer {Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.addTriggerTask(() - {// 定时任务逻辑},triggerContext - {CronTrigger cronTrigger new CronTrigger(0 0 0 * * ?); // 每天零点执行return cronTrigger.nextExecutionTime(triggerContext);});}
}4. 使用Quartz框架
如果需要更强大和灵活的定时任务功能比如支持集群部署、任务调度、错过任务处理等可以选择集成Quartz框架。
4.1 配置QuartzScheduler
首先需要配置QuartzScheduler在Spring Boot中可以通过配置文件或者Java代码来配置。
Configuration
public class QuartzConfig {Beanpublic SchedulerFactoryBean schedulerFactoryBean() {SchedulerFactoryBean schedulerFactoryBean new SchedulerFactoryBean();// 其他配置return schedulerFactoryBean;}
}4.2 定义Job类和Trigger类
Component
public class MyJob implements Job {Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {// 定时任务逻辑}
}Configuration
public class QuartzConfig {Beanpublic JobDetail myJobDetail() {return JobBuilder.newJob(MyJob.class).withIdentity(myJob).storeDurably().build();}Beanpublic Trigger myTrigger() {return TriggerBuilder.newTrigger().forJob(myJobDetail()).withIdentity(myTrigger).withSchedule(CronScheduleBuilder.cronSchedule(0 0 0 * * ?)) // 每天零点执行.build();}
}5. 总结
通过上述的四种方法的实践无论使用简单的Scheduled注解还是更灵活的Quartz框架都可以满足不同项目的需求。选择合适的方式并结合实际场景定时任务将为你的应用增添更多的价值和灵活性。 难熬的日子总会过去不信你回头看看你都已经在不知不觉中熬过来很多苦难余生很长不必慌张。