本文研究的主要是spring中FactoryBean中的getObject()方法的相關內容,具體如下。
FactoryBean接口定義了以下3個接口方法:
當配置文件中<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"> <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()方法實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!