美文网首页
在SpringBoot中开启定时任务

在SpringBoot中开启定时任务

作者: MHLEVEL | 来源:发表于2020-08-20 22:25 被阅读0次

    在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、 运行测试


    运行结果截图

    相关文章

      网友评论

          本文标题:在SpringBoot中开启定时任务

          本文链接:https://www.haomeiwen.com/subject/hsgejktx.html