Spring Task是Spring框架中的一个定时任务调度模块,它提供了一种简单的方式来实现基于时间的调度任务。
使用Spring Task,可以通过Java代码配置或注解的方式定义定时任务,并设置任务的执行时间、间隔周期、触发条件等。当达到指定的时间或条件时,Spring Task会自动触发任务的执行,可以执行任何有意义的操作,例如数据备份、缓存清理、邮件发送等。
Spring Task还具有以下特点:
1、简单易用:简单的XML或注解配置即可实现定时任务调度。
2、易于集成:与Spring框架集成无缝,支持Spring Boot应用快速启动。
3、可靠性高:支持在分布式环境下进行任务调度,并支持并发控制和异常管理。
4、监控调试:支持日志记录、任务执行状态监控和调试,方便排除问题。
1.入门案例
需求:每5秒在控制台输出一次时间
1、定义一个任务方法,在该方法上使用**@Scheduled**注解,并通常cron属性来指定该方法的执行的时间规则。
@Component
public class OrderStatisticsTask {
//注解:@Scheduled+cron
//测试定时任务
//每隔五秒执行一次
@Scheduled(cron = "0/5 * * * * ?")
public void testHello(){
System.out.println(new Date().toInstant());
}
}
2、在启动类上添加**@EnableScheduling**注解开启定时任务功能
@EnableScheduling
public class ManagerApplication {
public static void main(String[] args) {
SpringApplication.run(ManagerApplication.class , args) ;
}
}
2.cron表达式
定时任务触发时间的一个字符串表达形式,分为6或7个域,每一个域代表一个含义。
cron的结构从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份
网上搜索cron表达式会有很多生成工具:cron表达式生成器
常用cron表达式:
0 0 2 1 * ?
表示在每月的1日的凌晨2点调整任务0 15 10 ? * MON-FRI
表示周一到周五每天上午10:15执行作业0 0 12 * * ?
每天中午12点触发0 15 10 ? * *
每天上午10:15触发