将Groovy Grails-service注入Java类

时间:2011-11-22 01:56:49

标签: java grails service groovy dependency-injection

我在Groovy中实现了Grails-service,我想在Web应用程序中注入Java类。我知道我可以通过applicationContext.getBean(" exampleService")在Java中获取bean,但是在编译时类型ExampleService是未知的。

我可以简单地导入服务吗?它似乎没有声明一个典型的包。

(我对Grails和Java Web相当陌生,因此非常感谢能帮助我了解幕后发生的事情。)

3 个答案:

答案 0 :(得分:7)

推荐的方法是将Grails服务提取到接口中,然后通过Spring将此服务注入到java类中。请参阅用户指南 - http://www.grails.org/doc/1.3.x/guide/8.%20The%20Service%20Layer.html#8.4%20Using%20Services%20from%20Java

答案 1 :(得分:2)

如果要在不使用applicationContext.getBean("exampleService")的情况下将Grails服务注入Java类,那么Java类本身必须是一个Spring bean,您应该将这两者连接在一起resources.groovy或{{ 1}}。

如果上述内容对您没有多大意义,您可能需要阅读Spring依赖注入的基础知识。

答案 2 :(得分:0)

跟进Dónal所说的,你可以在资源中将Java类连接成bean.groovy

例如,假设您的java类的名称是JavaClass,它位于src文件夹中的某个位置。转到resources.groovy并将以下内容添加到您的bean ...

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

现在您应该能够像普通bean一样访问java类中的exampleService。

def exampleService

虽然请记住,如果你使用像intellij这样的东西,那么小豆图标可能不会出现在它旁边。这个是正常的。另外,不要忘记将JavaClass导入resources.groovy