← Back to posts
Optimize tasks with @Scheduled in Spring
JavaSpringBackend

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:

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

TipoCuándo usarlo
cronHorarios específicos (ej. cada lunes a las 8am)
fixedDelayCuando cada ejecución depende de la anterior
fixedRateCuando 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