我想在另一個服務的構造函數中注入一個服務依賴項(請參閱下面的示例代碼)。但是,當我嘗試分配api變量時,即使正確設置了bean變量,也會引發NoSuchBeanDefinitionException異常。如何通過構造函數在服務中手動注入依賴項?
值得一提的是,當我擴展此服務並初始化子服務時會發生這種情況。
我的問題是,我怎麼才能正確地注入依賴項服務到我的課,取決於我的Config.groovy中的設置?
class MyService {
def api
public MyService() {
def beanString = ConfigurationHolder.config.api
def bean = ApplicationHolder.application.getMainContext().getBean(GrailsNameUtils.getPropertyName(beanString))
this.api = bean
}
}
編輯:爲了澄清我的想法。我有兩個API:s,一個XML和一個JSON,它們提供相同的數據,但具有不同的表示形式。但是,我希望能夠將api設置爲在配置文件中使用,例如,帶有api-name的字符串。
我的想法是爲可用的apis(ApiInterface)提供一個通用接口,然後在使用api的服務初始化時,將實例變量設置爲配置的api。
除此之外,我希望能夠具有服務特定的設置,即每個配置文件中注入api的服務的設置,以設置使用哪個api。 例如
Config.groovy
firstService { api = "xml" } secondService { api = "json" }
非常感謝。懶惰的查找做了詭計! – 2011-05-04 21:03:15