Comment puis-je appeler une méthode résidant dans une classe Java existante à partir de l'application Grails? Est-il nécessaire/recommandé d'envelopper dans un service?Comment utiliser la classe java existante à partir de grails
Répondre
Mettez votre source src/java. Puis dans le fichier conf/printemps/resources.groovy, vous pouvez le faire, par exemple:
// Place your Spring DSL code here
beans = {
myJavaFunction(com.my.javafunction)
}
vous pouvez ensuite l'injecter dans vos contrôleurs ou services avec:
def myJavaFunction
est la classe dans un fichier JAR dans votre dossier lib/ou dans un fichier .java votre src/dossier?
De toute façon, il n'est pas nécessaire de l'envelopper dans un service. Vous pouvez construire des instances de la classe et appeler des méthodes à partir de n'importe où.
Si vous avez besoin d'encapsuler les appels de méthode dans une transaction, alors je la mettrais dans un service. Sinon, appelez-le directement. La seule autre raison de le mettre dans un service est d'utiliser la fonctionnalité de cadrage (si vous vouliez une nouvelle instance de la classe créée pour chaque demande)
acclamations
Lee
Si vous les avez emballés dans un fichier .jar puis déposez simplement le fichier jar dans votre projet/lib
il n'y a pas besoin d'envelopper comme service. si vous utilisez le printemps, il suffit d'ajouter le haricot dans resource.groovy
Je pensais que je devrais envoyer une mise à jour sur la façon de sur les grails 2.2, puisque j'ai beaucoup regardé autour et trouvé beaucoup de choses non pertinentes ne semble pas fonctionner, a fini par le faire fonctionner de cette façon:
Project name: gp22
Grails Domain Example name: DemoGrailsDomain
JavaClass:src/java/vv/Baggie.java
Controller: DemoGrailsDomainController
1: src/java/vv/Baggie.java
package vv;
import gp22.DemoGrailsDomain;
public class Baggie {
public int myresult(int value1) {
int resultset=10+value1;
return resultset;
}
public int getResult(int value1) {
int aa=myresult(value1);
return aa;
//You can call your domain classes directly
// Once called do a control shift o to pull in the above import example
//DemoGrailsDomain getdomain = new DemoGrailsDomain();
}
}
DemoGrailsDomainController:
def list(Integer max) {
//def myJavaFunction
Baggie a=new Baggie()
int passit=5
def bb=a.getResult(passit);
println "--"+bb
Faites un changement de contrôle o sur votre contrôleur maintenant, et il importera les vv.Baggie
Maintenant, quand je frappe la liste sur le navigateur le montre println:
| Serveur en cours d'exécution Parcourir à localhost: 8080/gp22 --15 sur ma console
Il vous avez une valeur transmise du contrôleur Grails à une classe Java traitée et retournée, la classe Java peut aussi appeler les Domaines Groovy et récupérer des informations
> Faire un décalage de contrôle Je suppose que vous parlez d'un IDE? Laquelle? –
Ctrl shift o sur ggts disponible sur la page de téléchargement sts. Bien que je pensais que c'était la norme sur tous les ide. Au moins éclipse est le même comportement pour jee – Vahid
Par exemple plugins/projets utilisant cette méthode se référer à: https://github.com/vahidhedayati/latlongcalc ou https://github.com/vahidhedayati/RemoteSSH - le remoteSSH rend Java & Groovy appelle à effectuer des demandes identiques – Vahid
- 1. Utiliser l'application java existante avec tomcat & cie
- 2. OWL: obtention d'une classe à partir d'une antologie existante
- 3. PHP: étendre la classe existante
- 4. Est-il possible d'exécuter une classe de test unitaires Grails Single Grails à partir de NetBeans?
- 5. Appelez la classe de Delphi à partir de Java
- 6. Inclure la classe Java générée par Grails dans le projet Grails
- 7. Ajout d'une propriété à une classe existante
- 8. Reverse engineering SQLAlchemy définition de classe déclarative à partir de la base de données MySQL existante?
- 9. Générer WSDL à partir de la classe java \ source
- 10. Comment utiliser Enum dans grails (pas dans la classe de domaine)
- 11. Comment utiliser l'API WinInet à partir de Java?
- 12. Appel d'une méthode de classe héritée à partir de Java
- 13. Ajouter un champ à une classe de domaine Grails?
- 14. Classe R manquante après la création d'un projet Android à partir d'une source existante
- 15. domaine initialisation de la classe Grails
- 16. Groovy/Grails - Comment obtenir une instance de classe à partir de String?
- 17. Java convertir l'objet à la classe comment?
- 18. Android: Comment puis-je démarrer une activité à partir d'une classe Java régulière? la classe Java est la servlet
- 19. Comment puis-je passer progressivement à la logique de persistance NHibernate à partir de la logique de persistance ADO.NET existante?
- 20. toString() dans Grails Classe de domaine Java Causes
- 21. Interface Builder ne me laissera pas renommer le nom de classe « View » à la classe existante
- 22. Grails console - Impossible de trouver la classe?
- 23. Comment ajouter un objet IDisposable + delegate à une classe existante
- 24. Comment ajouter un nouvel élément à une classe existante?
- 25. Ajouter une propriété à la classe VBA existante
- 26. Objectif C - Comment ajouter une méthode à une classe existante?
- 27. Comment utiliser la classe Component dans JSF2
- 28. comment cartographier le type complexe à une classe existante
- 29. Impossible de trouver la classe groovy à partir d'une classe Java
- 30. Appelez une classe java à partir de perl
Merci pour votre réponse. Encore une chose: j'ai un enregistreur apache dans cette classe et le compilateur ne trouve évidemment pas le bocal du logger. Dois-je simplement ajouter le fichier jar au dossier lib ou obtenir une instance spéciale de l'environnement? – xain
Vous pouvez publier cette question séparément. Je pense que nous avons rencontré cela, mais cela ne valait pas la peine de passer du temps en ce moment. Grails a intégré la journalisation, donc je suppose qu'il y a un conflit. –