我有一個應用程序,我希望能夠根據屬性文件中的值切換DAO實現。 Spring FactoryBean接口看起來好像很好,因爲我可以通過FactoryBean提供DAO,其中我可以根據屬性值進行切換。Spring FactoryBean用法
的this SpringSource的博客文章的最後一段,然而,說起這一點:
其中一個重要的外賣是,它是FactoryBean的,而不是factoried對象本身,那生活在Spring容器和享受生命週期掛鉤和容器服務。返回的實例是瞬態的 - Spring對getObject()返回的內容一無所知,並且不會嘗試執行任何生命週期鉤子或其他任何事情。
我的DAO對象包含Spring註釋@Repository
和@Transactional
。鑑於上述段落,如果我通過FactoryBean返回DAO實現,這些註釋是否會被忽略?如果是這樣,確保Spring正在管理FactoryBean返回的bean的好方法是什麼?
編輯:似乎大多數人都在爲問題提供備用配置解決方案。雖然我願意接受這些建議(並且如果它們是好的,它們會加註),但我的問題實際上與FactoryBean的正確使用有關,我將基於這些問題標記正確的答案。
這並不比改變'spring.xml'本身的class屬性好。我的意思是介紹一個屬性,配置屬性文件和後處理器,讓每個打開xml的人都想知道當前的'$ {dao.type}'是否有效。 – 2013-05-07 21:10:50
@Ravi「我希望能夠根據屬性文件中的值切換DAO實現」 - 即使您使用了工廠bean方法,您仍然需要查看屬性文件以瞭解哪些dao類型是有效的。 – 2013-05-07 21:43:31
不,使用'FactoryBean'你可以做類似' '。 (有效的MD5加密) –
2013-05-07 21:59:43