将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.groovy
或resources.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