日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

普通java程序怎样用cron_java – Spring cron vs普通cron?

發布時間:2023/12/2 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 普通java程序怎样用cron_java – Spring cron vs普通cron? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在嘗試在遺留的Java / Spring / Hibernate項目中使用cron作業,所以我決定使用spring調度程序.

我希望myTask.doStuff在每個月的第一個星期日的12:00運行.

在我的application-context.xml中,我已經將我的任務調度程序配置為:

問題cron表達本身是:0 0 12? 1/1 SUN#1 *

和myTask是一個bean,它有一個名為doS??tuff的方法,從單元測試運行時可以很好地工作.

當我構建和部署時,我從spring獲得了一個bootime異常:

Caused by: java.lang.IllegalArgumentException: cron expression must consist of 6 fields (found 7 in 0 0 12 ? 1/1 SUN#1 *)

at org.springframework.scheduling.support.CronSequenceGenerator.parse(CronSequenceGenerator.java:233)

at org.springframework.scheduling.support.CronSequenceGenerator.(CronSequenceGenerator.java:81)

at org.springframework.scheduling.support.CronTrigger.(CronTrigger.java:54)

at org.springframework.scheduling.support.CronTrigger.(CronTrigger.java:44)

at org.springframework.scheduling.config.ScheduledTaskRegistrar.afterPropertiesSet(ScheduledTaskRegistrar.java:129)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)

鑒于我第一次使用cron表達式,我的第一個假設是我做錯了,但我使用cronmaker進行了雙重檢查,它給了我相同的結果.

所有文檔都說:cron表達式是一個由六個或七個子表達式(字段)組成的字符串.1

盡管如此,我試圖敲掉第7個元素(年份)因為它不在任何示例中,并且得到了不同的錯誤消息:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.scheduling.config.ScheduledTaskRegistrar#0': Invocation of init method failed; nested exception is java.lang.NumberFormatException: For input string: "0#1"

… org.springframework.scheduling是否支持其他所有類型的cron風格? the spring-specific documentation只是說’cron表達’.

如何在此上下文中使此cron表達式按預期工作?任何幫助都將不勝感激.

目前,我的解決方案是簡化這個表達式,以便每個星期日運行,并預先安排一些Java邏輯來計算它當月的哪個星期日,并查看它是否有效 – 但這樣做會破壞配置方法的目的和看起來像一個反模式.

解決方法:

Spring計劃任務的格式與cron表達式的格式不同.

它們不遵循與UNIX cron表達式相同的格式.

只有6個字段:秒,分鐘,小時,星期幾,月,星期.

星號(*)表示匹配任何.

* / X表示“每X”(見例子).

一周的數字日對我不起作用.此外,“MON-FRI”更容易閱讀.

以下是一些示例表達式:

“0 0 18 * * MON-FRI”表示每個工作日下午6:00.

“0 0 * / 1 * * *”表示每小時一小時.

“0 0 * / 8 * * *”表示每小時8小時.

“0 0 12 1 * *”表示每月第一天中午12:00.

標簽:java,spring,cron

來源: https://codeday.me/bug/20190926/1818477.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的普通java程序怎样用cron_java – Spring cron vs普通cron?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。