SpringBoot-(九)SpringBoot实现定时执行任务

本文最后更新于:February 13, 2022 pm

SpringBoot框架中有两个非常重要的策略:开箱即用和约定优于配置。其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

目录

不需要导入任何依赖。

开启

需要开启定时功能的注解。在启动类上加入注解:@EnableScheduling

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.tothefor;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling //开启定时功能的注解
@SpringBootApplication
public class HomeApplication {

public static void main(String[] args) {
SpringApplication.run(HomeApplication.class, args);
}
}

使用

CRON表达式。可先了解一下。

编写service类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.tothefor.service;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.util.Date;

@Service
public class scheduledTest {

//cron表达式
// 秒 分 时 日 月 星期(0-7分别表示星期一到星期天,0和7都表示星期天,星号(*)表示所有)
@Scheduled(cron = "30 * * * * 0-7")//0-7用?也可以,但问号只能用于星期和日期上,表示不确定。通常用于:星期 确定了 日 用问号;日 确定了,星期 用问号
public void hell(){
System.out.println("我被执行了"+new Date());
}
}

然后再启动SpringBoot。

上面的cron表达式表示:每一天、每一个月、每一天、每一时、每一分的第30秒执行。简单说就是,每一天的第30秒的时候执行。

cron表达式理解示例

秒 分 时 日 月 星期(0-7分别表示星期一到星期天,0和7都表示星期天)

1
2
3
4
5
6
7
8
0 0 10,14,16 * * ? //每天早上的10,下午的14,16点执行
0 0/30 9-17 * * ? //每天早上9到晚上17,每30分钟执行一次
0 0/5 14 * * ? //每天的14点到14:55期间每5分钟执行一次
0 0/5 14,18 * * ? //每天的14点到14:55期间,18点到18:55期间,每5分钟执行一次
0 0 12 ? * 3 //每个星期三的12点执行
0 10,44 14 ? 3 3 //每年的三月的星期三下午14:10和14:44执行一次
0 15 10 L * ? //每个月的最后一日的上午10:15执行
0 15 10 ? * 6L //每个月的最后一个星期五上午10:15执行 ****注意特殊****