普通无数据库版:
一、加入@EnableScheduling,开启定时任务(此注解也可以加在启动类上)。
@EnableScheduling@ComponentpublicclassOneDemo{
二、在需要执行定时任务的方法上加上 @Scheduled注解并设置定时规则
@Scheduled(fixedRate=100*2)//每两百毫秒秒执行一次,或使用cron 设置执行规则publicvoidhandleDelay(){System.out.println(newDate());}
效果:
使用数据库:
一、创建数据库和表,没有什么命名限制,随便创建就行
二、实现SchedulingConfigurer 接口
@EnableScheduling@ComponentpublicclassOneDemoimplementsSchedulingConfigurer{
三、重写他的方法
@OverridepublicvoidconfigureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar){
scheduledTaskRegistrar.addTriggerTask(//1.添加任务内容(Runnable)()->System.out.println("执行动态定时任务: "+LocalDateTime.now().toLocalTime()),//2.设置执行周期(Trigger)
triggerContext->{//2.1 从数据库获取执行周期String cron= cronMapper.getCron();//2.3 返回执行周期(Date)returnnewCronTrigger(cron).nextExecutionTime(triggerContext);});}
效果和我们设置的 每十秒执行一次 一样
而且他是根据数据库存储的定时规则 实时更改的。
比如我将数据库设置为 每一秒一次。
在没有重启项目的情况下,他就变成一秒一次了
这里执行策略有很多,比如一天一次,或者周一或者周几 执行都行,只要你能想到的都能实现,只用
修改数据库里的 cron字段即可,但具体cron表达式改怎么写这里就不着重说明。
点赞干嘛,愣着啊。