Spring中FactoryBean的應用

2021-08-31 16:59:56 字數 1095 閱讀 2401

factorybean介面定義了以下3個介面方法:

object getobject():返回有factorybean建立的bean例項,如果issingleton()返回true,則該例項會放到spring容器的單例項快取池中。

boolean issingleton():確定由factorybean建立bean的作用域是singleton還是prototype.

class getobjecttype():返回factorybean建立bean的型別。

當配置檔案中 的class屬性配置的實現類是factorybean時,通過getbean方法返回的不是factorybean本身,而是 factorybean#getobject()方法所返回的物件,相當於factorybean#getobject()**了getbean()方 法。

我們在配置car時,car的每個屬性分別對應乙個元素標籤。假設我們嫌這種方式不苟簡潔,而希望通過逗號分隔的方式一次性的為car的所有屬性制定配置值,那麼我們可以通過編寫乙個factroybean來達到目的:

import org.springframework.beans.factory.factorybean;

public class ca***ctorybean implements factorybean

public void setcarinfo(string carinfo)

public object getobject()throws exception

public class getobjecttype()

public boolean issingleton()

}有了這個ca***ctorybean後,我們就可以在配置檔案中使用以下的配置方式定義car bean了:

當呼叫getbean("car")時,spring通過反射機制發現ca***ctorybean實現了factorybean的介面,這時 sping容器就呼叫介面方法ca***ctorybean#getobject()返回工廠類建立的物件。如果使用者希望獲取 ca***ctorybean的例項,則需要在使用getbean(beanname)方法時顯式地在beanname前加上「&」前 綴:getbean("&cr").

**:

spring原始碼分析之FactoryBean

一般情況下,我們spring採用反射來例項化物件,可是spring也提供了另一種方式,既通過實現factorybean來描述bean的例項化過程。public inte ce factorybean 介面描述很簡單 獲取bean,獲取bean的型別,是否是單例 public class carpub...

Spring複習筆記 Spring中的Bean

注意構造器例項化 最常用 靜態工廠方式例項化 例項工廠方式例項化 singleton 單例 始終使用的同乙個物件 預設 prototype 原型 每次都是乙個新的bean例項 request session globalsession websocket init method屬性 用於指定bean...

Spring中 Transactional的使用

1.在需要事務管理的地方加 transactional註解,transactional 註解可以被應用於介面定義和介面方法 類定義和類的 public 方法上.2.transactional 註解只能應用到 public 可見度的方法上,如果你在 protected private 或者 packa...