java - minutes - Diferencia entre*y? en primavera @ programado(cron="...")
spring scheduled annotation cron (2)
El tutorial está desactualizado. El simbolo significa exactamente lo mismo que *
. A partir de Spring 3.1.2.RELEASE, la jerarquía de llamadas es:
El constructor CronTrigger(String)
llama al constructor CronSequenceGenerator(String)
que llama a parse(String)
que llama a setDays(BitSet bits, String field, int max)
. Su implementación es clara:
private void setDays(BitSet bits, String field, int max) {
if (field.contains("?")) {
field = "*";
}
setNumberHits(bits, field, 0, max);
}
Entonces si , entonces *
.
He estado mirando el ejemplo de Spring Boot para programar tareas ( https://spring.io/guides/gs/scheduling-tasks/ ) y leí toda la documentación ( https://javahunter.wordpress.com/2011/05/05/cronscheduler-in-spring/ ) y veo que * y? Se utilizan casi indistintamente.
Por ejemplo, la línea.
@Scheduled(cron = "0 15 10 ? * *")
y
@Scheduled(cron = "0 15 10 * * ?")
hacer exactamente lo mismo. Entonces, ¿cuál es la diferencia entre * y?
asterix representa todos los valores posibles. Los signos de interrogación deben utilizarse para valores no específicos.
* ("todos los valores"): se utiliza para seleccionar todos los valores dentro de un campo. Por ejemplo, "" en el campo de minutos significa * "cada minuto".
? ("sin valor específico"): útil cuando necesita especificar algo en uno de los dos campos en los que se permite el carácter, pero no en el otro. Por ejemplo, si quiero que mi disparador se dispare en un día particular del mes (por ejemplo, el 10), pero no me importa qué día de la semana sea ese día, pondría "10" en el día de campo de mes, y "?" en el campo día de la semana. Vea los ejemplos a continuación para aclaración.
Copiado del tutorial