实现接口 FactoryBean(一种将有趣的对象构造逻辑封装在类中的模式)的 Bean 可以当普通豆子吗?
简而言之:
- 是的,您可以像使用普通豆子一样使用FactoryBean(例如将其注入其他豆子中)
- 此外,工厂 bean 将按需创建
<T>
的实例(或单例实例),这也将是 Spring bean。因此,您还可以将<T>
实例注入到其他 bean 中。在这种情况下,Spring 将使用您的工厂创建一个实例
使用参考文档中的自定义FactoryBeans
的主要原因:
FactoryBean接口是Spring IoC容器实例化逻辑的可插拔性点。如果你有复杂的初始化代码,而不是(可能)详细的XML,你可以创建自己的FactoryBean,在该类中编写复杂的初始化,然后将你的自定义FactoryBean插入容器。
弗赫特阅读:http://docs.spring.io/spring/docs/4.1.7.RELEASE/spring-framework-reference/html/beans.html#beans-factory-extension-factorybean
FactoryBean 是以 Bean 样式定义的,但为 Bean 引用公开的对象 (getObject()) 始终是它创建的对象