Ссылка на внешние java классы в resources.groovy - PullRequest
0 голосов
/ 06 июля 2011

Я пишу приложение Grails для отображения информации, поступающей из базы данных. Доступ к базе данных осуществляется службами Spring (с помощью DAO, сценариев SQLJ и т. Д.), И я хотел бы использовать его с контроллеров Grails.

Я добавил зависимости maven для импорта этих внешних классов Java.

Мой вопрос: как я могу настроить файл resources.groovy, чтобы иметь возможность ссылаться на мои существующие пружинные бины с моих контроллеров?

Это то, что я пробовал на данный момент:

import com.BeanClass

// Place your Spring DSL code here
beans = {
    springServiceName(BeanClass){
    }
}

И класс обслуживания во внешнем проекте:

package com;
...
@Repository("springServiceName")
@Service
public class BeanClass implements BeanInterface {
  ...
}

Но у меня возникает следующая ошибка при запуске приложения:

[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[groovyc] C:\epo\wIndigo\prs-web\grails-app\conf\spring\resources.groovy: 1: unable to resolve class com.BeanClass

У вас есть идея, почему он не извлекает источники успешно?

Заранее спасибо за любую помощь.

Привет.

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Я добавил maven-зависимости для импорта этих внешних классов Java.

Можете ли вы показать нам, как именно вы это сделали?Вы должны были добавить что-то вроде этого в dependencies разделе BuildConfig.groovy

compile 'group-id:artifact-id:version'

, например, чтобы добавить библиотеку Джексона:

dependencies {
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.7.6'
}

Обновление

Можете ли вы проверить, используете ли вы Maven для создания, развертывания и т. Д. Своего приложения Grails, или вы просто хотите, чтобы зависимости были извлечены из репозитория Maven?

Если последнее, вы можете настроить Maven.репозитории, которые он ищет в repositories секции BuildConfig.groovy

Например

repositories {

    grailsPlugins()
    grailsHome()
    grailsCentral()

    mavenLocal '/path/to/some/local/repository'
}
0 голосов
/ 06 июля 2011

Пара вещей.

1.) Вы добавили свой внешний jar-файл в папку \ lib \ вашего приложения grails и перезапустили приложение. После этого все должно работать нормально.

2.) Включите полный путь к классу и имя в определении bean-компонента, используйте «com.path.to.class.Bean», а не просто «Bean».

Кроме того ...

Если у вас есть какой-либо @PersistanceContext в вашем классе обслуживания, не ожидайте, что Grails будет внедрять EntityManager. Вам придется проделать дополнительную работу в вашем resource.xml, чтобы справиться с этим.

...