Spring的工廠Bean是Spring的一種特殊Bean,這種工廠Bean必須實現FactoryBean接口。工具
FactoryBean接口是工廠Bean的標準接口,實現該接口的Bean一般只能做爲工廠Bean使用。當咱們將工廠Bean部署在容器中,並經過getBean()方法來獲取工廠Bean時,容器不會返回FactoryBean實例,而是返回FactoryBean的產品。spa
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前加&符號。ci
對於初學者而言,可能沒法體會到工廠Bean的做用。實際上,FactoryBean是Spring中很是有用的一個接口。Spring內置提供了不少實用的工廠Bean,例如TransactionProxyFactoryBean,這個工廠Bean專門用於爲目標Bean建立事務代理。部署
Spring提供的工廠Bean,大多用於生產一批具備某種特徵的Bean實例,工廠Bean是Spring的一個重要工具類。get