Как использовать существующий класс Java из Grails - PullRequest
4 голосов
/ 19 января 2010

как я могу вызвать метод, находящийся в существующем классе Java из приложения Grails? Обязательно ли / рекомендуется это завернуть в сервисе?

Ответы [ 5 ]

11 голосов
/ 19 января 2010

Поместите ваш источник в src / java. Затем в conf / spring / resources.groovy вы можете сделать, например:

// Place your Spring DSL code here
beans = {
    myJavaFunction(com.my.javafunction)

}

Затем вы можете добавить его в свои контроллеры или службы с помощью:

def myJavaFunction
4 голосов
/ 19 января 2010

- это класс в файле JAR в вашей папке lib / или в файле .java в папке src /?

В любом случае, нет необходимости оборачивать это в сервис. Вы можете создавать экземпляры класса и вызывать методы из любого места.

Если вам нужно обернуть вызовы метода в транзакцию, я бы поместил ее в сервис. В противном случае просто позвоните прямо. Единственная другая причина поместить его в службу - это использовать функциональность определения области видимости (то есть, если вы хотите создать новый экземпляр класса для каждого запроса)

ура

Lee

1 голос
/ 31 июля 2013

Я подумал, что мне следует отправить обновленную информацию о том, как работать с Grails 2.2, так как я много раз осмотрелся и обнаружил множество не относящихся к делу вещей, которые, похоже, не сработали, в итоге заставил работать так: *

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

Сделайте управляющий сдвиг o на вашем контроллере сейчас, и он импортирует vv.Baggie

Теперь, когда я нажимаю на список в браузере, println показывает:

| Сервер работает. Перейдите на localhost: 8080 / gp22 --15 на моей консоли

Там у вас есть значение, передаваемое из контроллера Grails в класс Java, обработанный и возвращенный, класс Java также может вызывать Groovy Domains и получать информацию

0 голосов
/ 20 января 2010

нет необходимости упаковывать как услугу. если вы используете spring, просто добавьте bean-компонент в resource.groovy

0 голосов
/ 19 января 2010

Если они упакованы в файл .jar , просто перетащите файл jar в your-project / lib

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...