我有一个应用程序,我希望能够根据属性文件中的值切换 DAO 实现。Spring FactoryBean 接口看起来可以很好地工作,因为我可以通过 FactoryBean 提供 DAO,在其中我可以根据属性值进行切换工作。
然而,这篇springsource 博客文章的最后一段提到了这个警告:
这里的一个重要收获是,它是 FactoryBean,而不是工厂化对象本身,它存在于 Spring 容器中并享受生命周期钩子和容器服务。返回的实例是瞬态的 - Spring 对您从 getObject() 返回的内容一无所知,并且不会尝试使用任何生命周期挂钩或任何其他内容。
我的 DAO 对象包含 Spring 注释@Repository
和@Transactional
. 根据上面的段落,如果我通过 FactoryBean 返回 DAO 实现,这些注释会被忽略吗?如果是这样,确保 Spring 管理 FactoryBean 返回的 bean 的好方法是什么?
编辑:似乎大多数人都在为该问题提供替代配置解决方案。虽然我对这些建议持开放态度(如果它们很好,我会支持它们),但我的问题实际上与正确使用 FactoryBean 有关,我将根据这些问题标记一个正确的答案。