基于注解创建Spring Boot定时任务方法

spring boot进行定时任务一共有三种方式,第一种也就是最简单的一种:基于注解 (@Scheduled)的方式;第二种:基于接口 (SchedulingConfigurer);第三种:基于注解设定多线程定时任务

基于注解的方式


首先,打开idea,创建springboot项目,无需引入任何jar,springboot自带定时。

然后,在启动类中用注解@EnableScheduling进行标注,表明此类 存在定时任务。在定时执行的方法之上添加注解@Scheduled()。

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

@SpringBootApplication
@EnableScheduling//第1步:开启定时任务
public class ScheduleDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(ScheduleDemoApplication.class, args);
    }
    @Scheduled(fixedRate = 1000*5)//第2步:设置需要定时执行的任务,每隔5秒执行一次
    public void doSomething() {
        System.out.println("hello spring 定时器");
    }
}

 点击启动,即可看到控制台6秒输出一次“hello”。

当然,定时任务也可以放在其他类中。例如创建类Test。

package com.example.test;
 
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
/**
 * @Description
 * @ClassName Task1
 * @Author User
 * @date 2020.06.07 12:24
 */
@Component
public class Test {
 
    @Scheduled()
    public void sayWord(cron ="*/6 * * * * ?") {
        System.out.println("开启了定时任务");
    }
}

@Scheduled除了cron还有三种方式:fixedRate,fixedDelay,initialDelay

cron:表达式可以定制化执行任务,但是执行的方式是与fixedDelay相近的,也是会按照上一次方法结束时间开始算起。

*建议:直接点击在线Cron表达式生成器生成参数比较方便*

fixedRate:控制方法执行的间隔时间,是以上一次方法执行完开始算起,如上一次方法执行阻塞住了,那么直到上一次执行完,并间隔给定的时间后,执行下一次。

fixedRate:是按照一定的速率执行,是从上一次方法执行开始的时间算起,如果上一次方法阻塞住了,下一次也是不会执行,但是在阻塞这段时间内累计应该执行的次数,当不再阻塞时,一下子把这些全部执行掉,而后再按照固定速率继续执行。

initialDelay:initialDelay = 10000 表示在容器启动后,延迟10秒后再执行一次定时器。

猜你喜欢

转载自blog.csdn.net/lanlan112233/article/details/129424575