Внедрение Groovy Grails-сервиса в класс Java - PullRequest
4 голосов
/ 22 ноября 2011

У меня есть сервис Grails, реализованный в Groovy, который я хотел бы внедрить в класс Java в веб-приложении.Я знаю, что могу получить бин в Java через applicationContext.getBean ("exampleService"), но тип ExampleService неизвестен во время компиляции.

Можно ли просто импортировать службу?Кажется, он не объявляет типичный пакет.

(Я довольно новичок в Grails и Java Web, поэтому все, что поможет мне понять, что происходит за кулисами, здесь очень ценится.)

Ответы [ 3 ]

7 голосов
/ 22 ноября 2011

Рекомендуемый подход - извлечь службу Grails в интерфейс, а затем внедрить эту службу в класс Java через Spring.См. Руководство пользователя - http://www.grails.org/doc/1.3.x/guide/8.%20The%20Service%20Layer.html#8.4%20Using%20Services%20from%20Java

2 голосов
/ 22 ноября 2011

Если вы хотите внедрить службу Grails в класс Java без использования applicationContext.getBean("exampleService"), класс Java должен сам по себе быть компонентом Spring, и вы должны связать их вместе в resources.groovy или resources.xml.

Если вышесказанное не имеет для вас большого смысла, возможно, вы захотите ознакомиться с основами внедрения зависимостей Spring.

0 голосов
/ 09 июня 2015

В соответствии с тем, что сказал Донал, вы можете связать Java-класс как bean-компонент в resources.groovy

Например, скажем, имя вашего java-класса - JavaClass, и он находится где-то в вашемпапка src.Перейдите к resources.groovy и добавьте следующее к своим bean-компонентам ...

beans = {
...
    javaClass(JavaClass) {
        exampleService = ref('exampleService')
    }
}

Теперь вы сможете получить доступ к exampleService внутри вашего Java-класса, как обычный bean-компонент.

def exampleService

Хотя имейте в виду, что если вы используете что-то вроде intellij, маленький значок боба может не появиться рядом с ним.Это нормально.Также не забудьте импортировать JavaClass в resources.groovy

...