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/