Spring IOC ( 二) : FactoryBean接口(转载)
原网址:http://weilingfeng98.iteye.com/blog/836637
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; } } ??
?