大丰专业做网站,休闲食品网站模板,专业网站,南京医疗网站建设文章目录 一、Scheduled详解二、逻辑实现1、创建定时任务逻辑方法2、新建一个启动执行类 三、测试结果 说到定时任务#xff0c;我们应该会想起Scheduled#xff0c;Quartz以及XXL-JOB#xff0c;但是有的单体服务或者小项目#xff0c;为了方便快捷#xff0c;可能会直接… 文章目录 一、Scheduled详解二、逻辑实现1、创建定时任务逻辑方法2、新建一个启动执行类 三、测试结果 说到定时任务我们应该会想起ScheduledQuartz以及XXL-JOB但是有的单体服务或者小项目为了方便快捷可能会直接使用Scheduled去实现异步任务。因此从而延伸出本文的主题需求。 当项目中使用Scheduled如何在项目启动的时候让指定的异步任务提前执行一次
一、Scheduled详解
Scheduled注解支持多个参数用于灵活控制任务执行时间
cronCron表达式可以精准控制秒、分、小时、日、月、周等 zone接收一个时区比如我们一般使用的时区Asia/Shanghai该字段我们一般留空。fixedDelay上一次执行完毕时间点之后多长时间再执行。如Scheduled(fixedDelay 5000)fixedDelayString与 fixedDelay 意思相同只是使用字符串的形式。唯一不同的是支持占位符如Scheduled(fixedDelayString “5000”)fixedRate上一次开始执行时间点之后多长时间再执行如Scheduled(fixedRate 5000)fixedRateString与 fixedRate 意思相同只是使用字符串的形式。唯一不同的是支持占位符。initialDelay第一次延迟多长时间后再执行如第一次延迟1秒后执行之后按fixedRate的规则每5秒执行一次Scheduled(initialDelay1000, fixedRate5000)initialDelayString与 initialDelayString 意思相同只是使用字符串的形式。唯一不同的是支持占位符。
二、逻辑实现
1、创建定时任务逻辑方法
/*** Author 码至终章* Version 1.0*/
Component
public class ScheduledTest {Scheduled(cron * 1 * * * ?)public void task1() throws Exception{System.out.println(task1 执行: Thread.currentThread() - DateTime.now());}
}2、新建一个启动执行类
该类主要在启动时手动调用指定的任务方法
/*** Author 码至终章* Version 1.0*/
Component
public class StartupTasks {private final ScheduledTest scheduledTasks;public StartupTasks(ScheduledTest scheduledTasks) {this.scheduledTasks scheduledTasks;}PostConstructpublic void startUp() {try {System.out.println(服务启动执行任务);scheduledTasks.task1();}catch (Exception e){e.printStackTrace();}}
}注启动类记得自己加上EnableScheduling定时任务 才会执行当然这个不影响本文的逻辑测试
三、测试结果
服务启动后查看打印信息