Volver a la página principal
jueves 3 octubre 2024
42

Cómo programar tareas con @Scheduled en Spring Boot

La anotación @Scheduled en Spring Boot se utiliza para programar la ejecución automática de métodos en momentos específicos o intervalos definidos. Permite implementar tareas repetitivas, como la ejecución periódica de procesos o el manejo de trabajos en segundo plano sin necesidad de un *cron* externo.

¿Qué es @Scheduled en Spring Boot?

La anotación @Scheduled se aplica sobre métodos para indicar que deben ejecutarse en intervalos definidos. Es ideal para realizar tareas como enviar correos, limpieza de datos, o actualizaciones automáticas. Se puede configurar utilizando diferentes propiedades, como fixedRate, fixedDelay o cron, para establecer la frecuencia y el momento exacto de ejecución.

Para habilitar la funcionalidad de programación, primero se debe agregar la anotación @EnableScheduling a la clase principal de la aplicación o a una clase de configuración.

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableScheduling
public class SchedulingConfig {
}

Ejemplos de uso de @Scheduled

Ejecución de un método cada 5 segundos

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TareaProgramada {

    @Scheduled(fixedRate = 5000)
    public void tareaCadaCincoSegundos() {
        System.out.println("Esta tarea se ejecuta cada 5 segundos.");
    }
}

Uso de cron para tareas más complejas

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TareaCron {

    @Scheduled(cron = "0 0/2 * * * ?")  // Se ejecuta cada 2 minutos
    public void tareaCron() {
        System.out.println("Esta tarea se ejecuta cada 2 minutos usando cron.");
    }
}

Ejecución con un retraso inicial y después con un intervalo fijo

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TareaConRetraso {

    @Scheduled(initialDelay = 10000, fixedDelay = 3000)
    public void tareaConRetraso() {
        System.out.println("Esta tarea se ejecuta 10 segundos después del inicio y cada 3 segundos luego de completarse.");
    }
}

Referencia

Para más información, consulta la documentación oficial de Spring.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer