Ne groovy fournir un mécanisme inclus?
Nous sommes à la recherche pour un mécanisme inclus pour les scripts groovy avoir de l'espace pour transversaux-les préoccupations.
Dans mon exemple, nous avons, d'un service web paramètres de mesure des scripts groovy et que vous voulez enregistrer à notre protocole de service web. pour cela nous utilisons notre objet implicite (à partir de notre cadre) pour créer l'enregistrement de la déclaration.
Mais c'est le code standard si nous le code, c'est dans chacune de terminaison de service web.
Nous sommes à la recherche de quelque chose comme include() en php, qui comprend d'autres scripts groovy, avez-vous des idées de comment faire cela?
OriginalL'auteur codevour | 2009-08-12
Vous devez vous connecter pour publier un commentaire.
Puisque vous l'avez déjà mentionné “cross-cutting-préoccupations”, je dirais que vous avez besoin d'intercepter votre webservice appels AOP style (pas un mécanisme inclus).
Graal est complètement intégré avec Spring framework, donc c'est une bonne option pour l'exploitation de Spring AOP fonctionnalités. Jetez un oeil à ce chapitre à partir de grain de guide officiel:
http://grails.org/doc/latest/guide/14.%20Grails%20and%20Spring.html et de recherche pour le mot AOP.
Peut-être il ya un purement groovy façon de faire de l'AOP, mais j'irais avec le graal et le printemps.
OriginalL'auteur Dan
Groovy traite ses fichiers comme des objets (comme d'enrubannage automatique). Et il fait tout .groovy fichiers dans le chemin de classe java disponibles en tant que classes. Donc, si vous avez le fichier util.groovy, qui contient quelque chose comme ceci à l'intérieur:
D'appeler à partir d'un autre fichier que vous venez d'écrire:
Que c'est. Encore une fois, assurez-vous que votre util.groovy fichier est dans le classpath.
L'exemple ne fonctionne que, au moins à partir de Windows, si l'util.groovy script est renommé avec la capitalisation Util.groovy, et la référence en conséquence changé pour " println Util.AuxMethod()'
Suite à mon commentaire précédent. Cela s'applique à UNIX. Ne fonctionne pas jusqu'à ce que je renommer "util" à "Util". Aussi, plus d'expérience Java+Groovy et les développeurs de rédiger la déclaration de méthode pour se conformer avec les conventions Java: statique def auxMethod. I. e. "statique" avant le nom du type et de toutes les méthodes de commencer avec des bas-de-casse (voir, par exemple, des tonnes de méthodes statiques en java.util.Les Collections).
OriginalL'auteur Anton Mamaenko
Pour invoquer le script
u.groovy
depuis le script courant, en passant le long de l'origine des arguments à l'u.groovy, exécutezÉvidemment, vous pouvez également envoyer une Chaîne d'arguments que vous voulez:
OriginalL'auteur Blaine
Chercher à l'évaluer(Fichier) fonction:
http://groovy.codehaus.org/api/groovy/lang/Script.html
Généralement le code qui serait à l'appel de cette est compilé à une instance d'un anonyme
Script
sous-classe.Maintenant à: docs.groovy-lang.org/latest/html/gapi/groovy/lang/Script.html
OriginalL'auteur Jon
J'ai fait quelques recherches sur ce Domaine Spécifique de la Langue, j'étais en train de créer. Il y a trois possibilités:
Créer vos classes héritent d'un parent groovy classe. Mettre votre code partagé dans la classe de base.
Utiliser le ScriptBaseClass voir http://groovy.codehaus.org/Embedding+Groovy . C'est une classe à laquelle tous vos scripts seront créés.
Utiliser l'importation des méthodes statiques de la capacité. Notez que vous pouvez le faire à l'intérieur du conteneur java (voir http://mrhaki.blogspot.com/2011/06/groovy-goodness-add-imports.html ).
Tous ces grands travaux. Ma préférence est le ScriptBaseClass. Cela fonctionne mieux si le code commun est Groovy (le ScriptBaseClass doit être groovy classe. Il ne peut pas être une classe java.)
Bien sûr, avec tous ces éléments, vous devrez tout de même fait appel à la méthode commune dans votre code groovy. Par exemple:
Qui n'est pas trop horrible, je ne pense pas. Certainement de même que l'ajout de quelque sorte d' #include pré-processeur de déclaration.
Et enfin, tout cela suppose que vous avez accès à un programme en java qui appelle votre code Groovy. Si ce n'est pas le cas, vous pouvez toujours utiliser la statique des importations. C'est juste une ligne de code.
OriginalL'auteur Paul Nelson
J'ai trouvé ce mail liste utile.
http://groovy.329449.n5.nabble.com/Groovy-scripts-Reusing-declared-methods-in-other-scripts-How-Include-td5703723.html
OriginalL'auteur Scott Warren