spring中FactoryBean中的getObject()方法執行個體解析,

來源:互聯網
上載者:User

spring中FactoryBean中的getObject()方法執行個體解析,

本文研究的主要是spring中FactoryBean中的getObject()方法的相關內容,具體如下。

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

  • Object getObject():返回有FactoryBean建立的Bean執行個體,如果isSingleton()返回true,則該執行個體會放到Spring容器的單一實例緩衝池中。
  • boolean isSingleton():確定由FactoryBean建立Bean的範圍是singleton還是prototype.
  • Class getObjectType():返回FactoryBean建立Bean的類型。

當設定檔中 <bean>的class屬性配置的實作類別是FactoryBean時,通過getBean方法返回的不是FactoryBean本身,而是 FactoryBean#getObject()方法所返回的對象,相當於FactoryBean#getObject()代理了getBean()方 法。

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

import org.springframework.beans.factory.FactoryBean;public class CarFactoryBean implements FactoryBean{private String carInfo;public Stirng getCarInfo(){return carInfo;}public void setCarInfo(String carInfo){this.carInfo=carInfo;}public Object getObject()throws Exception{Car car=new Car();String[]infos = carInfo.split(",");car.setBrand(infos[0]);car.setMaxSpeed(Integer.aarseint(infos[1]));car.setPrice(double.parsedouble(infos[2]));return car;}public Class getObjectType(){return Car.class;}public Boolean isSingleton() {return true;}}

有了這個CarFactoryBean後,我們就可以在設定檔中使用以下的配置方式定義Car Bean了:

<bean id="car" class="com.lxm.fb.carFactoryBean">        <property name="carInfo" value="紅旗CA72,200,20000.00"/>   </bean>  

當調用getBean("car")時,Spring通過反射機制發現CarFactoryBean實現了FactoryBean的介面,這時 Sping容器就調用介面方法CarFactoryBean#getObject()返回工廠類建立的對象。如果使用者希望擷取 CarFactoryBean的執行個體,則需要在使用getBean(beanName)方法時顯式地在beanName前加上“&”前 綴:getBean("&car").

總結

以上就是本文關於spring中FactoryBean中的getObject()方法執行個體解析的全部內容,希望對大家有所協助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.