下面是所有参数的详细解释:
second:秒,取值范围:0~59;
minute:分钟,取值范围:0~59;
hour:小时,取值范围:0~23;
dayOfMonth:月中的某一天,取值范围:1~31;
month:月,取值范围:1~12;
dayOfWeek:周几,取值范围:1~7,其中1表示周日,2表示周一,以此类推;
year:年,取值范围:1970~2099;
persistent:是否持久化,默认为true。如果为 true,表示即使在应用程序重新启动后,这些计划任务仍应该继续运行;如果为false,表示应用程序重新启动后,这些计划任务将不再运行;
info:任务的描述信息;
timezone:时区,默认值为“GMT”。
使用表达式的方式控制任务执行时间:
除了上述参数之外,@Schedule注解还支持使用表达式的方式来控制任务的执行时间。表达式的格式为 cron 表达式。该表达式定义了时间间隔和计划执行程序的规则。 cron表达式由6个空格分隔的时间字段组成。这些字段依次表示秒,分,小时,日期,月份和星期几。每个字段都有一组允许的值,以及一些特殊字符,可以用来指定执行时间的不同选项。以下是每个字段的详细说明:
1.秒(0-59):表示一分钟中的哪一秒执行任务。 例如,cron = "0/5 * * * * *"表示从0秒开始,每5秒执行一次任务。
2.分钟(0-59):表示一小时中的哪一分钟执行任务。 例如,cron = "0 0/10 * * * *"表示每10分钟执行一次任务,从0分钟开始。
3.小时(0-23):表示一天中的哪个小时执行任务。 例如,cron = "0 0 12 * * *"表示每天中午12点执行任务。
4.日期(1-31):表示一个月中的哪一天执行任务。 例如,cron = "0 0 0 25 12 ?"表示每年的12月25日零点执行任务。
5.月份(1-12):表示一年中的哪一个月执行任务。 例如,cron = "0 0 0 1 * *"表示每个月的第一天执行任务。
6.星期几(0-7,星期日=0或7):表示一周中的哪一天执行任务。 例如,cron = "0 0 0 ? * SUN"表示每个星期天执行任务。
注意:cron表达式中的“*”表示所有可能的值,而“?”表示没有指定值(通常用于日期和星期字段)。
这里是一些其他示例:
0 0 0 * * *表示每天午夜执行任务0 0 12 * * ?表示每天中午12点执行任务0 15 10 ? * *表示每天上午10:15执行任务0 0/5 * * * ?表示从0秒开始,每5分钟执行一次任务
下面是一个使用@Schedule注解的例子:
@Service
public class MyTimer {@Schedule(second="*/10", minute="*", hour="*")public void execute() {System.out.println("定时任务执行了!");}
}
上面的代码表示每隔10秒钟执行一次定时任务。