2017-09-26 1 views
1

J'ai une méthode comme MyController.foo() et je veux l'exécuter tous les jours à 00:00.Exécuter la tâche Tous les jours à minuit - Grails 3.2.2

J'ai vu certaines solutions qui utilisent un TimerTask avec un délai de 1 jour en secondes, mais le jour du changement d'heure il apportera quelques erreurs.

Alors ... Quel est le moyen le plus efficace pour y parvenir?

Répondre

2

D'abord, vous devez activer la programmation en utilisant l'annotation de démarrage du printemps:

@EnableScheduling 
class Application extends GrailsAutoConfiguration { 
    static void main(String[] args) { 
     GrailsApp.run(Application, args) 
    } 
} 

Ensuite, vous pouvez mettre l'annotation @Scheduled sur vos méthodes:

@Scheduled(cron="00 00 * * *") 
def foo() { 
    //do something 
} 

Cron expression 00 00 * * * moyens d'exécuter tous les Midnigth.

+0

Dois-je ajouter quelque chose au contrôleur qui contient la méthode 'foo()'? –

+0

Devrais-je placer cette méthode dans un contrôleur ou dans un service? –

+1

Le service est le meilleur endroit pour les tâches planifiées. –