Java Spring scheduler的cron表达式-每年仅运行一次

Java Spring scheduler的cron表达式-每年仅运行一次,java,spring,cronexpression,spring-scheduled,Java,Spring,Cronexpression,Spring Scheduled,我的春季服务很好 @Scheduled( cron="0 0 7 * * SUN") public void doSomething() { // do something } 我知道您不能有第7个值,它是为指定年份而保留的。使用一个表达式,我可以告诉spring在一个特定的时间(比如2020年12月25日上午6点)每年运行一次吗 谢谢是的,你可以。看看答案。简而言之,您可以使用以下格式: 0 0 6 6 9 ? | | | | | | | | | | | | | | | | |

我的春季服务很好

@Scheduled( cron="0 0  7 * * SUN")
public void doSomething() {
    // do something
}
我知道您不能有第7个值,它是为指定年份而保留的。使用一个表达式,我可以告诉spring在一个特定的时间(比如2020年12月25日上午6点)每年运行一次吗


谢谢

是的,你可以。看看答案。简而言之,您可以使用以下格式:

0 0 6 6 9 ? 
| | | | | | 
| | | | | |
| | | | | +----- any day of the week.
| | | | +------- 9th month (September).
| | | +--------- 6th day of the month.
| | +----------- 6th hour of the day.
| +------------- Top of the hour (minutes = 0).
+--------------- Top of the minute (seconds = 0).
当然


它将于2020年12月6日23:59:59发射

您可以通过按月计算,它一年只运行一次

@Schedule(cron="0 0 0 25 12 ?") --- it will run 25th December every year 

public void CronExpression(){

//your logic

}

这将在一年内运行,一旦您可以使用此代码,文档将声明它只有6个字段。事实上,添加第7个字段会导致:“遇到无效的@Scheduled method…Cron表达式必须包含6个字段”我得到了“无效的Cron表达式…必须包含6个字段…”年份,Spring似乎不支持年份字段。但石英确实如此。
@Schedule(cron="0 0 0 25 12 ?") --- it will run 25th December every year 

public void CronExpression(){

//your logic

}