Poseemos la mejor solución que hallamos por todo internet. Nosotros queremos que te resulte de mucha utilidad y si deseas compartir algún detalle que nos pueda ayudar a perfeccionar nuestra información hazlo con total libertad.
Solución:
Si desea configurar la programación del trabajo en tiempo de ejecución, no creo que pueda usar la anotación @Scheduled
.
Puede usar su propio programador en lugar de Documentación de primavera :
scheduler.schedule(task, new CronTrigger("0 15 9-17 * * MON-FRI"));
Luego, si desea cambiar la configuración, puede cancelar la programación y crear una nueva.
TaskScheduler
devolver un ScheduledFuture
que debe guardar en algún lugar y se puede cancelar con cancel(...)
método.
Creo que @Scheduled no admite esta característica (debe ser interesante implementar eso). Para la función de programación avanzada, debe usar cuarzo u otra solución de programación. Mi respuesta se basa en la solución de cuarzo:
@Component
class ReschedulerComponent
@Autowired
private SchedulerFactoryBean schedulerFactoryBean;
public void reSchedule()
Trigger oldTriger = schedulerFactoryBean.getScheduler().getTrigger("my_custom_trigger");
Trigger myNewTrigger = TriggerBuilder
.newTrigger()
.forJob(jobDetail) // Name of your job
.withIdentity("my_custom_trigger")
.startAt(myNewDATE)
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withMisfireHandlingInstructionFireNow())
.build();
schedulerFactoryBean.getScheduler().rescheduleJob(oldTriger.getKey(), myNewTrigger);
Introducción rápida: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html
Si estás de acuerdo, tienes el poder dejar un enunciado acerca de qué te ha parecido este tutorial.