springBoot 自带定时器
使用起来特别的简单
启动类
@SpringBootApplication @EnableScheduling public class SimpleSpringBootApplication { public static void main(String[] args) { SpringApplication.run(SimpleSpringBootApplication.class, args); } }定时器
@Component public class Schedul { @Scheduled(fixedDelay=2000) public void scheduled(){ System.out.println("Scheduled"); } @Scheduled(cron="0/2 * * * * ?") public void writer(){ System.out.println(" Scheduler-cron"); } }类前面一定要加上@Component注解
运行得到
Scheduled Scheduler-cron Scheduled Scheduler-cron Scheduled Scheduler-cron Scheduled Scheduler-cron Scheduledok成功
我们看一下Scheduled的源代码:
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Repeatable(Schedules.class) public @interface Scheduled { String CRON_DISABLED = "-"; String cron() default ""; String zone() default ""; long fixedDelay() default -1L; String fixedDelayString() default ""; long fixedRate() default -1L; String fixedRateString() default ""; long initialDelay() default -1L; String initialDelayString() default ""; }总共八个参数 参数详解如下: 1. cron 该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。
cron表达式语法 [秒] [分] [小时] [日] [月] [周] [年] 注:[年]不是必须的域,可以省略[年],则一共6个域
2. zone 时区,接收一个java.util.TimeZone#ID。cron表达式会基于该时区解析。默认是一个空字符串,即取服务器所在地的时区。比如我们一般使用的时区Asia/Shanghai。该字段我们一般留空。
3. fixedDelay 上一次执行完毕时间点之后多长时间再执行。如: @Scheduled(fixedDelay = 5000) //上一次执行完毕时间点之后5秒再执行
4. fixedDelayString 与 3. fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。如: @Scheduled(fixedDelayString = “5000”) //上一次执行完毕时间点之后5秒再执行
5. fixedRate 上一次开始执行时间点之后多长时间再执行。如:
@Scheduled(fixedRate = 5000) //上一次开始执行时间点之后5秒再执行
6. fixedRateString 与 5. fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
7. initialDelay 第一次延迟多长时间后再执行。如:
@Scheduled(initialDelay=1000, fixedRate=5000) //第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
8. initialDelayString 与 7. initialDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。