溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

以單個數(shù)字開頭的Java字符串屬性值被截斷怎么解決

發(fā)布時間:2022-02-28 10:26:25 來源:億速云 閱讀:175 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下以單個數(shù)字開頭的Java字符串屬性值被截斷怎么解決的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

簡介

當(dāng)嘗試使用環(huán)境變量參數(shù)化 Spring 任務(wù)的 CRON 計劃時,我遇到了一個問題,即未從屬性接收完整計劃,而僅在第一個值為數(shù)字的情況下。搜索谷歌給了我零個我的問題類型的例子,所以我是靠自己的。

我找到的解決方案涉及為計劃的每個部分使用單獨(dú)的環(huán)境變量。

使用代碼

附加的基于 Maven 的項(xiàng)目是一個簡單的項(xiàng)目,其中 Spring 任務(wù)會將當(dāng)前時間打印到控制臺。我使用 Intellij 的 IDEA,但您應(yīng)該能夠?qū)⑵湔{(diào)整到 Eclipse 或您喜歡的任何其他 IDE。

任務(wù)類是:

public class ScheduledTasks {

    private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(cron ="${cron.schedule}")
    public void reportCurrentTime() {
        log.info("The time is now {}", dateFormat.format(new Date()));
    }
}

在我的 中application.properties,我最初從單個環(huán)境變量設(shè)置時間表:

cron.schedule = ${test_cron}

如果我使用*/5 * * * * ?環(huán)境變量“ test_cron”中設(shè)置的“ ”(每 5 秒)的CRON 計劃運(yùn)行此程序,我會得到預(yù)期的結(jié)果:

2021-04-29 12:17:50.437  INFO 22420 --- [           main] o.s.s.c.ThreadPoolTaskScheduler
          : Initializing ExecutorService 'taskScheduler'
2021-04-29 12:17:50.480  INFO 22420 --- [           main] c.e.s.SchedulingTasksApplication
         : Started SchedulingTasksApplication in 2.441 seconds (JVM running for 3.931)
2021-04-29 12:17:55.008  INFO 22420 --- [   scheduling-1] c.e.schedulingtasks.ScheduledTasks
       : The time is now 12:17:55
2021-04-29 12:18:00.014  INFO 22420 --- [   scheduling-1] c.e.schedulingtasks.ScheduledTasks
       : The time is now 12:18:00
2021-04-29 12:18:05.005  INFO 22420 --- [   scheduling-1] c.e.schedulingtasks.ScheduledTasks
       : The time is now 12:18:05

但是,如果我以“ 0 25 * * * ?”(在過去 25 分鐘)的時間表運(yùn)行它,我會收到錯誤消息,指出我的時間表無效并且其中只有零:

Encountered invalid @Scheduled method 'reportCurrentTime': For input string: ""0"

為了解決這個問題,我更改了應(yīng)用程序?qū)傩?,以便?code>Environment每個計劃部分使用一個變量,中間有一個空格:

cron.schedule = ${cron_sec} ${cron_min} ${cron_hr} ${cron_day} ${cron_mth} ${cron_wk}

并在每個環(huán)境變量設(shè)置為所需值的情況下運(yùn)行它。類似于上面失敗的例子:

cron_sec=0
cron_min=30
cron_hr=*
cron_day=*
cron_mth=*
cron_wk=*

我得到了預(yù)期的輸出:

2021-04-29 12:29:25.539  INFO 22896 --- [           main] c.e.s.SchedulingTasksApplication
         : Started SchedulingTasksApplication in 3.677 seconds (JVM running for 5.441)
2021-04-29 12:30:00.003  INFO 22896 --- [   scheduling-1] c.e.schedulingtasks.ScheduledTasks

以上就是“以單個數(shù)字開頭的Java字符串屬性值被截斷怎么解決”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI