春天计划任务的cron表达式验证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了春天计划任务的cron表达式验证相关的知识,希望对你有一定的参考价值。
我正在写一个计划任务,需要每个月的第1个星期六运行.我想出了这个。
@Scheduled(cron = "0 0 23 1-7 * SAT")
// Runs on 1st Saturday of each month at 23:00
public void CleanUpScheduledTask()
我是怎么想出来的呢?
0 0 23
意思是每天晚上11点
1-7 *
即每月1-7日
SAT
星期六
你建议如何确保上述表达式有效? 我如何测试这样的功能?
谢谢你的帮助。
答案
1. 构建Cron表达式
使用Spring cron工作表达式
@Scheduled(cron = "[Seconds] [Minutes] [Hours] [Day of month] [Month] [Day of week] [Year]")
NB年字段是可选的
#
用于指定任务开始的星期和星期。例如,每个月的第一个星期六(
7#1
)?
不代表特定的值,可用于月日或星期日字段。*
代表所有数值
因此,Cron表达式变成了
@Scheduled(cron = "0 0 23 ? * 7#1")
2. 测试Cron作业
使用
Awaitility dependency
<dependency> <groupId>org.awaitility</groupId> <artifactId>awaitility</artifactId> <scope>test</scope> </dependency>
-使用 Spring Integration testing
@SpringJUnitConfig(CleanScheduler.class)
public class CleanSchedulerUnitTest
@Autowired
private CleanScheduler cleanScheduler;
@Test
void cleanUpScheduledTaskShouldReturnSuccess()
//Act
cleanScheduler.cleanUpScheduledTask();
//Assertions
以上是关于春天计划任务的cron表达式验证的主要内容,如果未能解决你的问题,请参考以下文章