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.
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 {
}
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.");
}
}
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.");
}
}
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.");
}
}
Para más información, consulta la documentación oficial de Spring.
Jorge García
Fullstack developer