
Optimize tasks with @Scheduled in Spring
Omargpax · 20 de diciembre de 2023
En el desarrollo de una aplicación o proyecto, pequeñas tareas se convierten en cuellos de botella funcionales. En este artículo descubrirás cómo esta simple herramienta puede ayudarte a automatizar tareas clave.
Al desarrollar un aplicativo personal, surgieron algunos problemas funcionales que impedían el uso óptimo de algunas actividades. Tomé la decisión de implementar tareas programadas en el sistema.
Por esta razón, he preparado una breve documentación que detalla cómo aprovechar la notación @Scheduled.
¿Qué es @Scheduled?
La anotación @Scheduled de Spring facilita la programación de tareas automáticas dentro de una aplicación. Es útil para realizar operaciones periódicas como:
- Limpieza de datos
- Actualizaciones automáticas
- Envío de notificaciones
- Cualquier tarea que deba ejecutarse de forma regular
Configuración básica
Primero habilita el scheduling en tu clase principal:
@EnableScheduling
@SpringBootApplication
public class TuAplicacionApplication {
public static void main(String[] args) {
SpringApplication.run(TuAplicacionApplication.class, args);
}
}
Tipos de scheduler
1. Cron scheduler
Ejecuta la tarea según una expresión cron:
@Scheduled(cron = "0 0 8 * * MON-FRI")
public void tareaMatutina() {
System.out.println("Ejecutando cada día laboral a las 8am");
}
2. Fixed Delay scheduler
Espera X milisegundos después de que termine la ejecución anterior:
@Scheduled(fixedDelay = 5000)
public void tareaConDelay() {
System.out.println("Ejecuta 5s después de terminar la anterior");
}
3. Fixed Rate scheduler
Ejecuta cada X milisegundos sin importar si la anterior terminó:
@Scheduled(fixedRate = 3000)
public void tareaPeriodicа() {
System.out.println("Ejecuta cada 3 segundos");
}
Comparativa
| Tipo | Cuándo usarlo |
|---|---|
cron | Horarios específicos (ej. cada lunes a las 8am) |
fixedDelay | Cuando cada ejecución depende de la anterior |
fixedRate | Cuando necesitas intervalos exactos |
Conclusión
Con @Scheduled puedes mantener tu aplicación corriendo como un reloj sin necesidad de herramientas externas. Es simple, nativo de Spring y suficiente para la mayoría de casos de uso.
Tip: Para tareas más complejas considera Quartz Scheduler o Spring Batch.
Fuente: Medium