Spring Boot之定时调度Scheduled Tasks
来源:互联网 发布:jquery placeholder.js 编辑:程序博客网 时间:2024/06/05 03:36
平常项目中经常可能会有一些定时调度的需求,就会需要用到Quartz或者是Scheduled Tasks,Scheduled Tasks相比于Quartz,更为轻量,当然功能上也没有Quartz全面,对于需求不复杂的定时调度,用Schduled Tasks反而会更方便,今天就讲一下Spring Boot中使用Scheduled Tasks。
关于Spring Boot中怎么去使用定时任务,官网这里有给出简单的例子戳我
构建项目
首先我们构建一个Spring Boot项目,不需要向其中添加任何依赖,已经自带了Scheduled Tasks,然后我们需要在启动类中加上注解@EnableScheduling
,用以开启定时调度功能。
@SpringBootApplication@EnableSchedulingpublic class ScheduledTaskApplication { public static void main(String[] args) { SpringApplication.run(ScheduledTaskApplication.class, args); }}
创建任务
创建一个test类,加上注解@Component
,对于这个注解的作用大家都应该知道的,然后对于需要做调度的方法上加上注解@Scheduled
,这个注解有几个属性,这里分别简单解释一下
cron—cron表达式,不解释,该懂的
zone—cron表达式使用的时区,默认为本机对应时区
fixedDelay—固定时间间隔执行,即最后一次执行完到下一此执行开始的时间
fixedDelayString—同上,只是参数为String类型
fixedRate—以固定的时间间隔执行
fixedRateString—同上,只是参数为String类型
initialDelay—任务第一次执行前,延迟时间
initialDelayString—同上,只是参数为String类型
下面为我的测试类,对于这几个属性分别测试了一下
@Componentpublic class TaskTest { @Scheduled(cron = "0/5 * * * * ? ") public void test1() { System.out.println("当前时间:" + LocalTime.now() + "------test1被调度"); } @Scheduled(fixedRate = 5000) public void test2() { System.out.println("当前时间:" + LocalTime.now() + "------test2被调度"); } @Scheduled(fixedDelay = 5000) public void test3() { System.out.println("当前时间:" + LocalTime.now() + "------test3被调度"); } @Scheduled(initialDelay = 2000, fixedDelay = 5000) public void test4() { System.out.println("当前时间:" + LocalTime.now() + "------test4被调度"); } @Schedules(value = {@Scheduled(cron = "0 04 23 * * ? "), @Scheduled(cron = "0 05 23 * * ? ")})// @Scheduled(cron = "0 01 23 * * ? ")// @Scheduled(cron = "0 02 23 * * ? ") public void test5() { System.out.println("当前时间:" + LocalTime.now() + "------test5被调度"); }}
@Schedules
上面的测试类中,还使用了@Schedules
这样的注解,这个注解只有一个value属性,接收一个@Scheduled
数组作为参数,我想应该可以猜到它的作用了吧,那它是干嘛的呢?其实也就是对于一个任务,可能有不同的执行需求,比如:同一天中,不同时间段的执行频率不一样,那么我们可以使用它。
在它的注释中还提到,@Scheduled
注解也可以多个一起用,测试类中注释部分和上面@Schedules
作用一样
测试
这里5个test方法打印出的结果为:
当前时间:23:03:40.002------test1被调度当前时间:23:03:45.003------test1被调度当前时间:23:03:50.001------test1被调度当前时间:23:03:55.004------test1被调度当前时间:23:04:00.003------test1被调度当前时间:23:03:39.747------test2被调度当前时间:23:03:44.748------test2被调度当前时间:23:03:49.747------test2被调度当前时间:23:03:54.745------test2被调度当前时间:23:03:59.748------test2被调度当前时间:23:03:39.747------test3被调度当前时间:23:03:44.748------test3被调度当前时间:23:03:49.748------test3被调度当前时间:23:03:54.749------test3被调度当前时间:23:03:59.750------test3被调度当前时间:23:03:41.744------test4被调度当前时间:23:03:46.744------test4被调度当前时间:23:03:51.748------test4被调度当前时间:23:03:56.752------test4被调度当前时间:23:04:01.756------test4被调度当前时间:23:04:00.004------test5被调度当前时间:23:05:00.005------test5被调度
可以看到@Schedules
的注解确实执行了两次
代码
代码
- Spring Boot之定时调度Scheduled Tasks
- Spring任务定时调度<task:scheduled-tasks>cron参数详解
- spring-boot 定时任务之Scheduled Task
- Spring Boot 之 Scheduling Tasks定时任务
- Spring任务调度 task:scheduled-tasks
- Spring任务调度<task:scheduled-tasks>(定时器)
- Spring任务调度<task:scheduled-tasks>
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring任务调度<task:scheduled-tasks>【含cron参数详解】
- Spring简单的定时任务机制task:scheduled-tasks
- 经典的生产者消费者模型(一)
- HTTP TCP UDP SCOKET的层级
- 第九周训练赛——B
- Fliping game HDU
- 安卓listView 中渲染 ArrayAdapter 和SimpleAdapter
- Spring Boot之定时调度Scheduled Tasks
- Mysql Warning :Using a password on the command line...
- OpenShift Origin v3.7 创建router
- windows-mysql5.7.19免安装版安装步骤和注意
- C homework2
- [EMWIN] emwin的刷新机制探索1
- Free talk with Taylor'
- JavaWeb学习心得之Servlet(一)
- 常见的图片格式