我有一个在Groovy中实现的Grails服务,我想在Web应用程序中注入一个Java类。我知道我可以通过applicationContext.getBean(“exampleService”)获得Java中的bean,但编译时未知类型ExampleService。将Groovy Grails服务注入到Java类中
我可以简单地导入服务吗?它似乎没有宣布一个典型的包。
(我是相当新的的Grails和Java Web,以便任何事情来帮助我的东西是怎么回事幕后非常感谢理解。)
我有一个在Groovy中实现的Grails服务,我想在Web应用程序中注入一个Java类。我知道我可以通过applicationContext.getBean(“exampleService”)获得Java中的bean,但编译时未知类型ExampleService。将Groovy Grails服务注入到Java类中
我可以简单地导入服务吗?它似乎没有宣布一个典型的包。
(我是相当新的的Grails和Java Web,以便任何事情来帮助我的东西是怎么回事幕后非常感谢理解。)
建议的方法是提取Grails的服务为接口,然后通过Spring将这个服务注入到你的java类中。请参阅用户指南 - http://www.grails.org/doc/1.3.x/guide/8.%20The%20Service%20Layer.html#8.4%20Using%20Services%20from%20Java
如果你不想使用applicationContext.getBean("exampleService")
注入Grails的服务到Java类,Java类本身必须是一个Spring bean,你应该二者连接在一起,在任何resources.groovy
或resources.xml
。
如果上述内容对您没有多大意义,您可能需要阅读Spring依赖注入的基础知识。
什么多纳尔说了之后,你可以将Java类作为resources.groovy
例如豆,假设您的Java类的名称是JavaClass,它位于你的src某处夹。转到resources.groovy并添加以下到您的豆...
beans = {
...
javaClass(JavaClass) {
exampleService = ref('exampleService')
}
}
现在,你应该能够访问exampleService您的Java类中像一个普通的豆腐。
def exampleService
虽然请记住,如果您使用的是像intellij这样的小bean图标,它可能不会出现在它旁边。这个是正常的。此外,不要忘记将JavaClass导入resources.groovy
http://grails.github.io/grails-doc/latest/guide/services.html#usingServicesFromJava – mohsenmadi