将Groovy Grails-service注入Java类

我有一个在Groovy中实现的Grails服务,我想在Web应用程序中注入Java类。 我知道我可以通过applicationContext.getBean(“exampleService”)在Java中获取bean,但是在编译时类型ExampleService是未知的。

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

(我对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.groovyresources.xml中将两者连接在一起。

如果上述内容对您没有多大意义,您可能需要阅读Springdependency injection的基础知识。

跟随Dónal所说的,您可以在resources.groovy中将Java类连接为bean

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

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

现在,您应该能够像常规bean一样访问java类中的exampleService。

 def exampleService 

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