Springboot非分布式定时任务实现代码

网友投稿 353 2023-02-20

Springboot非分布式定时任务实现代码

1. 核心注解

在springboot项目中我们可以很方便地使用spring自己的注解@Scheduled和@EnableScheduling配合来实现便捷开发定时任务。

@EnableScheduling注解的作用是发现注解@Scheduled的任务并后台执行,此注解可以加到启动类上也可以加到执行调度任务类上。

经测试,当有多个包含定时任务的类时,@EnableScheduling注解加在其中一个类上就可以保证所有定时任务的成功实现。

注意:定时任务的类上还需要配合使用@Configuration或@Component注解,这两个注解都可以。

2. 实例代码:

2.1 @EnableScheduling加在启动类上;

import com.my.common.util.DateUtil;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

import java.util.Date;

/**

* @description:

* @author: Karl

* @date: 2020/10/10

*/

@Component

public class TestSchedule01 {

@Scheduled(cron = "0 * * * * ? ")

public void test() {

System.out.println("我是定时任务01,我执行了" + DateUtil.formatDateByDateTime(new Date()));

}

}

import com.my.common.util.DateUtil;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

import java.util.Date;

/**

* @description:

* @author: Karl

* @date: 2020/10/10

*/

@Configuration

public class TestSchedule02 {

@Scheduled(cron = "1 * * * * ? ")

public void test() {

System.out.println("我是定时任务02,我执行了" + DateUtil.forgtarDsBmatDateByDateTime(new Date()));

}

}

import org.springframework.boot.SpringApplichttp://ation;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling

@SpgtarDsBringBootApplication

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

2.1 @EnableScheduling加在任务类上;

import com.my.common.util.DateUtil;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

import java.util.Date;

/**

* @description:

* @author: Karl

* @date: 2020/10/10

*/

@Component

@EnableScheduling

public class TestSchedule01 {

@Scheduled(cron = "0 * * * * ? ")

public void test() {

System.out.println("我是定时任务01,我执行了" + DateUtil.formatDateByDateTime(new Date()));

}

}

import com.my.common.util.DateUtil;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

import java.util.Date;

/**

* @description:

* @author: Karl

* @date: 2020/10/10

*/

@Configuration

public class TestSchedule02 {

@Scheduled(cron = "1 * * * * ? ")

public void test() {

System.out.println("我是定时任务02,我执行了" + DateUtil.formatDateByDateTime(new Date()));

}

}

注意:只需要在其中一个任务类上加上@EnableScheduling注解,所有的定时任务就都可以正常运行。

3. @Scheduled的几种用法

@Scheduled这个注解支持3种定时方式,即:cron、fixedRate和fixedDelay

cron:是以表达式的形式来表示时间,最常见;

fixedRate:表示Scheduled隔多长时间调用一次,不管任务是否执行完;

fixedDelay:表示该任务执行完后隔多长时间再调用;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:银行卡分几种类型(信用卡容易下卡的银行有哪些)
下一篇:Java 如何优雅的拷贝对象属性
相关文章

 发表评论

暂时没有评论,来抢沙发吧~