私はタスクをスケジュールするためのSpring Bootの例( https://spring.io/guides/gs/scheduling-tasks/ )を見て、いくつかのドキュメント( https: //javahunter.wordpress.com/2011/05/05/cronscheduler-in-spring/ )そして、*と?ほとんど同じ意味で使用されます。
たとえば、行
@Scheduled(cron = "0 15 10 ? * *")
そして
@Scheduled(cron = "0 15 10 * * ?")
まったく同じことをします。 *と*の違いは何ですか?
アスタリスクはすべての可能な値を表します。非特定の値には疑問符を使用する必要があります
*( "すべての値")-フィールド内のすべての値を選択するために使用されます。たとえば、分フィールドの「」は*「毎分」を意味します。
? (「特定の値なし」)-文字が許可されている2つのフィールドのいずれかで何かを指定する必要があるが、もう一方は指定できない場合に便利です。たとえば、月の特定の日(たとえば、10日)にトリガーを起動したいが、何の曜日かは気にしない場合は、曜日に「10」を入力します月のフィールド、および「?」曜日フィールド。詳細については、以下の例を参照してください。
チュートリアル からコピー
チュートリアルが古くなっています。記号_?
_は、正確にが_*
_と同じであることを意味します。 Spring 3.1.2.RELEASE以降、呼び出し階層は次のとおりです。
コンストラクタCronTrigger(String)
は、コンストラクタCronSequenceGenerator(String)
を呼び出し、コンストラクタparse(String)
は、setDays(BitSet bits, String field, int max)
を呼び出します。その実装は明確です。
_private void setDays(BitSet bits, String field, int max) {
if (field.contains("?")) {
field = "*";
}
setNumberHits(bits, field, 0, max);
}
_
したがって、_?
_の場合、_*
_になります。