Spring Boot – Programación

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *