從我們的Grails/Groovy應用程序中,我們需要使用來自傳統Java服務類的服務,其構造函數的類型爲org.springframework.core.io.Resource ,例如注入構造函數參數Grails/Groovy的Spring資源文件
public ServiceClass(Resource someResource)
我們需要注入的服務類的實例到Groovy類中使用Spring DSL我們的應用程序中,與資源指的是我們的/ src目錄/主/資源中的一個XML文件。我試圖爲此創建Spring配置,但到目前爲止我找不到可行的解決方案。配置文件的相關部分看起來像各種教程,如發現此
beans = {
xmlns aop:"http://www.springframework.org/schema/aop",
sec:"http://www.springframework.org/schema/security",
context:"http://www.springframework.org/schema/context"
serviceClass(com.somepackage.ServiceClass) {
//here we need to refer to the constructor arg XML file some way
}
}
我曾嘗試多種語法關閉beanDefinition.constructorArgs,但不幸的是迄今爲止沒有成功。雖然應用程序編譯(grails:war)和啓動(grails:run-app)都沒有指出bean佈線有任何問題,但是當應用程序實際加載到瀏覽器中時,我們收到一個NPE,聲明我們的Groovy類服務類被注入,是一個空對象。所以看起來,豆類佈線畢竟不成功。任何幫助表示讚賞
我想你閱讀http://grails.org/doc/latest/guide/spring.html#theBeanBuilderDSLExplained「可以使用每個bean定義方法的參數定義構造函數參數。把它們的第一個參數後(類): bb.beans { 叫exampleBean(MyExampleBean 「firstArgument」,2){ someProperty = [1,2,3]} } '' – cfrick
,你也仍然可以使用groovy旁邊的''resources.xml'',如果你感覺更好,寫作XML – cfrick
感謝您的評論。我在提問之前閱讀了所提及的文檔並嘗試了這種語法,但之後它也不起作用。然而,事實證明,主要問題是項目設置本身,在解決問題後,現在已經解決了;這種方法或者在閉包中使用bean.constructorArgs似乎都可以 – hammerfest