每个月25日触发的Cron表达式

ell*_*lle 9 java cron spring

如何编写cron表达式以在每个月的25日早上9点触发一个函数?

当我执行此代码时,

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class PayrollSchedulerImpl implements PayrollScheduler{

    @Scheduled(cron="0 9 25 1 * ?")
    public void calculateSalaryScheduled()
    {
        calculateSalary();
    }

    public void calculateSalary()
    {
        /* */
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误,

java.lang.StackOverflowError
    sun.util.calendar.ZoneInfo.getOffsets(Unknown Source)
    sun.util.calendar.ZoneInfo.getOffsets(Unknown Source)
    java.util.GregorianCalendar.computeFields(Unknown Source)
    java.util.GregorianCalendar.computeTime(Unknown Source)
    java.util.Calendar.updateTime(Unknown Source)
    java.util.Calendar.complete(Unknown Source)
    java.util.Calendar.get(Unknown Source)
    org.springframework.scheduling.support.CronSequenceGenerator.doNext(CronSequenceGenerator.java:130)
Run Code Online (Sandbox Code Playgroud)

Sea*_*oyd 21

@Scheduled(cron="0 9 25 1 * ?")
Run Code Online (Sandbox Code Playgroud)

这只是1月1日,时间无效,你需要这个:

@Scheduled(cron="0 0 9 25 * ?")
Run Code Online (Sandbox Code Playgroud)

参考: CronSequenceGenerator