我有一個在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