springBoot 定时器Scheduled

tech2022-07-09  170

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 Scheduled

ok成功

我们看一下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 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

最新回复(0)