Spring的工厂Bean

*爱你&永不变心* 提交于 2020-03-02 11:41:38

Spring的工厂Bean是Spring的一种特殊Bean,这种工厂Bean必须实现FactoryBean接口

FactoryBean接口是工厂Bean的标准接口,实现该接口的Bean通常只能作为工厂Bean使用。当我们将工厂Bean部署在容器中,并通过getBean()方法来获取工厂Bean时,容器不会返回FactoryBean实例,而是返回FactoryBean的产品。

FactoryBean接口提供如下三个方法:

接口 描述
T getObject() 实现该方法负责返回该工厂Bean生成的Java实例
Class<?> getObjectType() 实现该方法返回该工厂Bean生成的Java实例的实现类
boolean isSingleton()

实现该方法表示该工厂Bean生成的Java实例是否为单例模式

实现FactoryBean接口的Bean无法作为正常Bean使用。配置FactoryBean与配置普通Bean的定义没有区别,但当客户端对该Bean id请求时,容器返回该FactoryBean的产品,而不是返回该FactoryBean本身。

当我们确实需要获取FactoryBean本身时,可以在Bean id前加&符号。

对于初学者而言,可能无法体会到工厂Bean的作用。实际上,FactoryBean是Spring中非常有用的一个接口。Spring内置提供了很多实用的工厂Bean,例如TransactionProxyFactoryBean,这个工厂Bean专门用于为目标Bean创建事务代理。

Spring提供的工厂Bean,大多用于生产一批具有某种特征的Bean实例,工厂Bean是Spring的一个重要工具类。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!