Spring Scheduler

Buenas, quiero ejecutar un metodo cada 10min, el metodo es muy sencillo solo manda a imprimir por cosola, pero me envia el siguiente error: java.lang.IllegalArgumentException: Only no-arg methods may be annotated with @Scheduled.

Mi contexto:

 

La clase con el metodo anotado:
 

Mi Test:
 

Supongo que mi problema se encuentra en la anotación: @Scheduled(cron="0/10 * * * * ?") pero no se por que, alguien que me pueda orientar?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Sin argumentos

Los métodos que debes usar con ésa anotación ( ) deben ir sin argumentos; según recuerdo, para configurar una tarea con argumentos, es otra forma... pero no me creas, checa las docs de Spring.

Imagen de ezamudio

interrogación

Para qué es la interrogación? nunca la había visto en notación de crontab. si mal no recuerdo es minuto, hora, día del mes, mes, y día de la semana... entonces el sexto, la interrogación, es el comando a ejecutar? tipo un parámetro de JDBC?

En fin, el error es muy claro: No puedes ponerle @Scheduled a métodos que tienen parámetros y estás anotando un método con un parámetro. La razón es obvia; cuando se ejecuta el método cada X tiempo, qué parámetro se le pasaría? por eso no pueden tener parámetros los métodos que se ejecutan cada X tiempo.

Imagen de paranoid_android

Podrias intentar

Only no-arg methods may be annotated with @Scheduled.

 

el ?

Si pones el ? al final de una hora, se ejecuta todos los dias... si despues del ? le pones una fecha (mes dia) significa que se ejecuta en ese mes y ese dia de todos los años. Si le pones un año despues del ?, significa que se ejecuta todos los dias de ese año ('nomas).

Cron Expressions

Huuuuy, buenisimo, encontre una tabla con ejemplos de Cron Expressions

creo que les faltó cuando quieres que se ejecute solo ciertos dias, pero es obvio que se ponen los dias en separados por coma.

;)

Yo lo heche a andar!

Muchas gracias a todos por sus respuestas, como lo indico ezamudio un metodo que contiene parametros no puede anotarse con @Scheduled y la solución que propone paranoid_android lo resuelve. Las tablas de los ejemplo de crones que menciona java.daba.doo me sirvieron de mucho.

Gracias