Spring Boot brinda la capacidad de programar tareas para que se ejecuten en un período de tiempo determinado con la ayuda de la anotación @Scheduled . Este artículo proporciona una guía paso a paso sobre cómo podemos programar tareas para que se ejecuten en una aplicación Spring Boot.
Implementación:
Se representa a continuación paso a paso de la siguiente manera:
Paso 1: crear una aplicación de arranque de primavera usando Spring Initializer para lo cual uno puede consultar los conceptos básicos de la creación de una clase Spring .
Paso 2: especificar la anotación @EnableScheduling en la clase de aplicación Spring Boot.
Java
// Java Program to Illustrate Specifying // @EnableScheduling annotation package com.Scheduler; // Importing required classes import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; // Annotation @SpringBootApplication @EnableScheduling // Class public class SchedulerApplication { // Main driver method public static void main(String[] args) { SpringApplication.run(SchedulerApplication.class, args); } }
La anotación @EnableScheduling facilita Spring Boot con capacidad de ejecución de tareas programadas.
Paso 3: crear un programador de clase @Component que defina el método scheduleTask() para programar una tarea usando la anotación @Scheduled .
El método scheduleTask() en la clase Scheduler simplemente imprime la fecha y la hora en que se ejecuta la tarea.
Programación de tareas usando una expresión cron
Java
// Java Program to Illustrate Scheduling Task // using a cron expression package com.Scheduler; // Importing required classes import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; // Annotation @Component // Class public class Scheduler { // Method // To trigger the scheduler every one minute // between 19:00 PM to 19:59 PM @Scheduled(cron = "0 * 19 * * ?") public void scheduleTask() { SimpleDateFormat dateFormat = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss.SSS"); String strDate = dateFormat.format(new Date()); System.out.println( "Cron job Scheduler: Job running at - " + strDate); } }
El elemento cron especificado en la anotación @Scheduled permite definir expresiones similares a cron para incluir disparadores en el segundo, minuto, hora, día del mes, mes y día de la semana. La expresión especificada aquí en el elemento cron indica que Spring Boot active el programador cada minuto entre las 19:00 y las 19:59.00.
Al ejecutar la aplicación Spring Boot, podemos ver el resultado en la consola de la siguiente manera:
Programación de tareas a tarifa fija
Java
// Java Program to Illustrate Scheduling Task // At a Fixed Rate package com.Scheduler; // Importing required classes import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; // Annotation @Component // Class public class Scheduler { // Method // To trigger the scheduler to run every two seconds @Scheduled(fixedRate = 2000) public void scheduleTask() { SimpleDateFormat dateFormat = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss.SSS"); String strDate = dateFormat.format(new Date()); System.out.println( "Fixed rate Scheduler: Task running at - " + strDate); } }
El elemento fixedRate especificado en la anotación @Scheduled ejecuta el método anotado en un período de tiempo fijo entre invocaciones. No espera a que se complete la tarea anterior. El valor de tiempo especificado para este elemento está en milisegundos.
Aquí se define un planificador de tarifa fija que se ejecuta cada 2 segundos a partir de las 19:11:58.
Al ejecutar la aplicación Spring Boot, podemos ver el resultado en la consola de la siguiente manera:
Programación de tareas para que se ejecuten con un retraso fijo
Java
// Java Program to Illustrate Scheduling Task // at a Fixed Delay package com.Scheduler; // Importing required classes import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; // Annotation @Component // Class public class Scheduler { // Method // To trigger the scheduler every 3 seconds with // an initial delay of 5 seconds. @Scheduled(fixedDelay = 3000, initialDelay = 5000) public void scheduleTask() { SimpleDateFormat dateFormat = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss.SSS"); String strDate = dateFormat.format(new Date()); System.out.println( "Fixed Delay Scheduler: Task running at - " + strDate); } }
El elemento fixedDelay especificado en la anotación @Scheduled ejecuta el método anotado en un período de tiempo fijo entre el final de la invocación anterior y el inicio de la siguiente invocación. Básicamente espera a que se complete la tarea anterior. El valor de tiempo especificado para este elemento está en milisegundos.
El elemento initialDelay especificado aquí permite mencionar la cantidad de tiempo que espera antes de la invocación de la primera tarea. El valor de tiempo especificado para este elemento está en milisegundos.
Aquí, el planificador definido comienza con un retraso inicial de 5 segundos y continúa para ejecutar la tarea con un retraso fijo de 3 segundos.
Al ejecutar la aplicación Spring Boot, podemos ver el resultado en la consola de la siguiente manera:
Publicación traducida automáticamente
Artículo escrito por akankshapatro y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA