在SpringBoot中开启定时任务

2020-08-20  本文已影响0人  MHLEVEL

在SpringBoot 应用中开启定时任务只需要两步:
step one.
step two.
: )

1、 第一步


好了,第一步是在应用启动类上添加@EnableScheduling 注解来允许当前应用开启定时任务。

package com.mhlevel;

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

/**
 * @author mhlevel
 * @date 2020-08-20 11:44
 */
@SpringBootApplication
@EnableScheduling
public class springbootApplication {
    public static void main(String[] args) {
        SpringApplication.run(springbootApplication.class, args);
    }
}

2、 第二步


第二步是创建一个定时任务的类,它里面可能会包含很多个定时任务(一个任务就是对应到类中的一个方法),注意,这个定时任务类需要用@Component 注解标注,以便Spring 容器能扫描到这个类
BootSchedule.java

package com.mhlevel.schedule;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author mhlevel
 * @date 2020-08-20 21:19
 */

@Slf4j
@Component
public class BootSchedule {

    private final DateTimeFormatter fmt = DateTimeFormatter.ofPattern(
            "HH:mm:ss"
    );

    // 上次任务开始后隔三秒开启下一次任务
    @Scheduled(fixedRate = 3000)
    public void schedule01(){
        log.info("schedule01 -> {}", LocalDateTime.now().format(fmt));
    }

    // 上次任务执行完毕的时间点之后3s再执行
    @Scheduled(fixedDelay = 3000)
    public void schedule02(){
        log.info("schedule02 -> {}", LocalDateTime.now().format(fmt));
    }

    // 第一次延后2s 执行,之后每3s 执行一次
    @Scheduled(initialDelay = 1000, fixedRate = 3000)
    public void schedule03(){
        log.info("schedule03 -> {}", LocalDateTime.now().format(fmt));
    }

    // 每3s 执行一次
    @Scheduled(cron = "0/3 * * * * ?")
    public void schedule04(){
        log.info("shedule04 -> {}", LocalDateTime.now().format(fmt));
    }
}

3、 运行测试


运行结果截图
上一篇下一篇

猜你喜欢

热点阅读