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

文章介绍了在SpringBoot中实现定时任务的三种方法:1)使用@Scheduled注解;2)基于SchedulingConfigurer接口;3)创建多线程定时任务。通过@Scheduled注解,可以在方法上直接声明定时任务,如设置fixedRate或cron表达式来控制执行频率。此外,还提到了initialDelay参数用于延时启动任务。
摘要由CSDN通过智能技术生成

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秒后再执行一次定时器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值