2017-04-11 1 views
0

J'ai un contrôleur d'événement avec une méthode populate() qui ajoute des événements d'un lien JSON à ma base de données. Je veux que cela se produise au démarrage de mon serveur.Exécuter la méthode du contrôleur au démarrage (Grails)

J'ai essayé différentes choses dans mon fichier Bootstrap. Tels que:

def event = new EventController.populate() 

Répondre

1

Vous devriez vraiment déplacer ce code dans un service et hors de votre contrôleur. Cela vous donne beaucoup plus d'options, y compris l'injection du service dans votre Bootstrap.groovy et l'appel de la méthode au démarrage de l'application.

C'est une solution Grails bien plus appropriée.

+0

Quelles autres options pourraient me mettre dans un service? Je suis un débutant à Grails –

+0

Un service peut également implémenter l'interface 'org.springframework.beans.factory.InitializingBean' qui vous permet de mettre du code dans la méthode' afterPropertiesSet'. Cela sera exécuté une fois que le bean est créé dans le contexte de l'application. Ce qui est utile quand vous ne voulez pas compter sur 'Bootstrap.groovy'. Juste comme un autre exemple. Les services ont leur propre utilité au-delà de votre cas d'utilisation. Ils sont singleton, généralement sans état, peuvent être injectés dans d'autres services, contrôleurs, bibliothèques de balises, voire dans des classes de domaine. De plus, ils sont faciles à tester aussi. –