springboot的定时任务

1、定时任务的创建方式:  

  •   基于注解@Schedule和@EnableScheduling
  •   (待完善。。。)

2、@Schedule@EnableScheduling

  适用于定时任务执行时间较短,并且比较单一。@scheduled定时执行任务的时候是在一个单线程中,如果有多个任务,其中一个任务执行时间过长,则有可能会导致其他后续任务被阻塞直到该任务执行完成,也就是会造成一些任务无法定时执行的错觉

  (1)在pom.xml中加入依赖,spring-boot-devtools模块可以包含在任何项目中,它可以节省大量的时间。可以不添加

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
</dependency>

  (2)在springboot的启动类DemoApplication上添加@EnableScheduling

package com.example.demo;

@SpringBootApplication @EnableScheduling
public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); System.out.println("你好"); } }

  (3)创建定时任务类

package com.example.demo.Time;

@Component
public class timer { @Scheduled(cron = "0/15 * * * * ? ") //每隔15秒执行一次 private void test(){ System.out.println("任务开始时间:"+new Date()); } }

执行效果:

  


或者只在定时任务类中添加注解信息,不修改启动类DemoApplication

@Component
@Configuration      //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling   // 2.开启定时任务
public class timer {
    @Scheduled(cron = "0/15 * * * * ? ")  //每隔15秒执行一次
    private void test(){
        System.out.println("任务开始时间:"+new Date());
    }
}

同样也可以定时成功

  

 

Cron表达式参数分别表示:

  • 秒(0~59) 例如0/5表示每5秒
  • 分(0~59)
  • 时(0~23)
  • 日(0~31)的某天,需计算
  • 月(0~11)
  • 周几( 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT)

注意:是@Scheduled(cron = “0/1 * * * * ?”)中cron的值根据实际需写,可以去下面的网站去转换。
http://cron.qqe2.com/

原文地址:https://www.cnblogs.com/echola/p/10954552.html