1、总应用主类上上添加@EnableScueduling注解,启动启用定时任务的配置,代码如下
... ... @SpringBootApplication @EnableScheduling public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
2、创建定时任务实现类
package com.example.demo; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; @Component public class ScheduledTasks { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 5000) public void reportCurrentTime() { System.out.println("现在时间:" + dateFormat.format(new Date())); } @Scheduled(fixedRate = 1000) public void testCurrentTime(){ System.out.println("**现在时间:" + dateFormat.format(new Date())); } }
3、运行程序,控制台中可以看到类似如下输出,定时任务开始正常运作了。
2018-01-08 13:43:21.888 INFO 16748 — [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ”
2018-01-08 13:43:21.894 INFO 16748 — [ main] com.example.demo.DemoApplication : Started DemoApplication in 3.636 seconds (JVM running for 6.093)
**现在时间:13:43:22
**现在时间:13:43:23
**现在时间:13:43:24
**现在时间:13:43:25
**现在时间:13:43:26
现在时间:13:43:26
**现在时间:13:43:27
**现在时间:13:43:28
**现在时间:13:43:29
**现在时间:13:43:30
@Scheduled详解
在上面的入门例子中,使用了@Scheduled(fixedRate = 5000) 注解来定义每过5秒执行的任务,对于@Scheduled的使用可以总结如下几种方式:@Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
@Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
@Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
@Scheduled(cron=”*/5 * * * * *”) :通过cron表达式定义规则
在上面的入门例子中,使用了@Scheduled(fixedRate = 5000) 注解来定义每过5秒执行的任务,对于@Scheduled的使用可以总结如下几种方式:@Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
@Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
@Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
@Scheduled(cron=”*/5 * * * * *”) :通过cron表达式定义规则
参考文章:http://spring.io/guides/gs/scheduling-tasks/