今天小編給大家分享一下以單個數字開頭的Java字符串屬性值被截斷怎么解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
當嘗試使用環境變量參數化 Spring 任務的 CRON 計劃時,我遇到了一個問題,即未從屬性接收完整計劃,而僅在第一個值為數字的情況下。搜索谷歌給了我零個我的問題類型的例子,所以我是靠自己的。
我找到的解決方案涉及為計劃的每個部分使用單獨的環境變量。
附加的基于 Maven 的項目是一個簡單的項目,其中 Spring 任務會將當前時間打印到控制臺。我使用 Intellij 的 IDEA,但您應該能夠將其調整到 Eclipse 或您喜歡的任何其他 IDE。
任務類是:
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
,我最初從單個環境變量設置時間表:
cron.schedule = ${test_cron}
如果我使用*/5 * * * * ?
環境變量“ test_cron
”中設置的“ ”(每 5 秒)的CRON 計劃運行此程序,我會得到預期的結果:
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 分鐘)的時間表運行它,我會收到錯誤消息,指出我的時間表無效并且其中只有零:
Encountered invalid @Scheduled method 'reportCurrentTime': For input string: ""0"
為了解決這個問題,我更改了應用程序屬性,以便在Environment
每個計劃部分使用一個變量,中間有一個空格:
cron.schedule = ${cron_sec} ${cron_min} ${cron_hr} ${cron_day} ${cron_mth} ${cron_wk}
并在每個環境變量設置為所需值的情況下運行它。類似于上面失敗的例子:
cron_sec=0
cron_min=30
cron_hr=*
cron_day=*
cron_mth=*
cron_wk=*
我得到了預期的輸出:
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
以上就是“以單個數字開頭的Java字符串屬性值被截斷怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。