我在Groovy中实现了Grails-service,我想在Web应用程序中注入Java类。我知道我可以通过applicationContext.getBean(" exampleService")在Java中获取bean,但是在编译时类型ExampleService是未知的。
我可以简单地导入服务吗?它似乎没有声明一个典型的包。
(我对Grails和Java Web相当陌生,因此非常感谢能帮助我了解幕后发生的事情。)
答案 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