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