2010-02-13 43 views
0

我已經散落代碼通過插件服務,使用AntBuilder這樣的:使用Spring注入AntBuilder?

def ant = new AntBuilder() 

這會導致代碼實在是很難測試,我想注入prototype作用域AntBuilder,我可以代替與模擬。但是,我幾乎是一個春天的新手......我該怎麼做呢?

我試圖簡單地把這個在/grails-app/conf/spring/resources.groovy:

beans = { 
antBuilderBean(groovy.util.AntBuilder){b -> 
     b.scope="prototype" 
    } 
} 

class MyService { 
    def antBuilderBean 

但antBuilderBean爲空。如果我將bean定義放在應用程序的resources.groovy(而不是插件的resources.groovy)中,那麼bean名稱將顯示在應用程序上下文中,但antBuilderBean仍然會在服務中移除爲null碼。

我需要某種工廠bean嗎?或者,我是否必須從Spring上下文或其他東西顯式構建bean?

回答

0

這適用於我在一個新的應用程序只是複製/粘貼你的代碼。嘗試運行'grails clean' - 它通常會解決像這樣的意外行爲的問題。

+0

謝謝! 我也發現我可以把這個bean定義放在 GrailsPlugin.groovy doWithSpring()方法中。 – Wayne 2010-02-13 18:46:40

+0

對不起,沒有看到這是插件 - doWithSpring()是在插件中註冊bean的地方。 – 2010-02-13 19:46:19