在resources.groovy中引用外部java类

时间:2011-07-06 09:09:24

标签: grails resources dependency-injection

我正在编写一个grails应用程序来显示来自数据库的信息。 数据库访问是由Spring服务(使用DAO,SQLJ脚本等)完成的,我想从我的grails控制器中使用它。

我已经添加了maven依赖项来导入这些外部Java类。

我的问题是:如何配置resources.groovy文件以便能够从我的控制器中引用我现有的spring bean?

这是我此刻尝试过的:

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 个答案:

答案 0 :(得分:2)

  

我已经添加了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仓库中检索依赖项?

如果是后者,您可以自定义它在repositories的{​​{1}}部分中搜索的Maven存储库

例如

BuildConfig.groovy

答案 1 :(得分:0)

夫妻俩。

1。)您是否已将外部jar添加到grails应用程序的\ lib \文件夹中并重新启动应用程序。执行此操作后它应该可以正常工作。

2.。)在bean definiation中包含完整的类路径和名称,使用'com.path.to.class.Bean'而不仅仅是'Bean'。

同时...

如果您的服务类中有任何@PersistanceContext,则不要指望grails注入EntityManager。你必须在resource.xml中做一些额外的工作来处理它。