介绍:
介绍:Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间来自动执行某个代码逻辑。
作用:定时执行某段Java代码。
应用场景:
信用卡每月还款提醒;
贷款每月还款提醒;
未支付订单自动处理;
只要是需要定时处理的任务都可以使用Spring Task。
cron的介绍(使用Spring Task的基础要求):
使用cron表达式:
该表达式是一个字符串,用来描述任务触发的时间。
分为6或7个域;每个域由空格分隔开;
每个域为:秒、分钟、小时、日、月、周(星期几)、年(可选)。
例子:
2022年10月12日上午8点整;
秒、分钟、小时、日、月、周、年(可选)。
0 0 8 12 10 ? 2022;
因此表达式为:
(0 0 8 12 10 ? 2022)
为什么周是?;周和日会有冲突;(一般日和周的值不同时设置,其中一个设置,另一个用?表示。)
{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
网站直接生成:在线Cron表达式生成器
在SpringBoot项目中使用Spring Task:
使用步骤:
1.导入maven坐标Spring-context;
2.启动类添加注解@EnableScheduling开启任务调度。
3.自定义定时任务类。(业务逻辑)(使用到了cron表达式)
详细步骤:
依赖:
(一般在这个依赖中,一般能启动服务器程序,都有这个依赖了)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
简单案例:
SpringBoot的启动类:
@SpringBootApplication
@EnableTransactionManagement //开启注解方式的事务管理,可以不用加,会自动开启
@Slf4j
@EnableCaching //开启缓存注解功能;
@EnableScheduling //开启Spring Task 定时任务调度;自己定义的任务调度类才会生效。
public class SkyApplication {
public static void main(String[] args) {
SpringApplication.run(SkyApplication.class, args);
log.info("server started");
}
}
定时任务类:
// 定义定时任务类
@Component //要加这个,让该类进入Spring容器实例化,才能执行该类代码;
@Slf4j //日志注解,log
public class MyTask {
/**
* 定时任务,一个简单的例子
*
*/
@Scheduled(cron = "0/5 * * * * ?") // 间隔5秒执行,日和周一般使用一个。
public void executeTask(){ //方法名任意,一般是业务名称
log.info("定时任务开始执行:{}",new Date());
}
}
结果: