FactoryBean的作用:
FactoryBean是一个接口,扩展功能提供给用户自定义工厂方法和工厂对象用于实例化对象。
FactoryBean定义了3个方法接口:
T getObject():自定义的工厂方法;
booleanisSingleton():定义Bean是不是单例的,如果true则是singleton,false的话就是prototype;
Class<T>getObjectType():一般返回实例化对象的类对象。
实例如下:
自定义工厂:
package com.baobaotao.fb;
import org.springframework.beans.factory.FactoryBean;
public class CarFactoryBean implements FactoryBean<Car>
{
//用作初始化参数的字符串
private String carInfo;
public String getCarInfo()
{
return carInfo;
}
public void setCarInfo(String carInfo)
{
this.carInfo = carInfo;
}
//1 实现getObject方法 这里的类似一个工厂方法
//使用carInfo字符串实例化并返回对象
public Car getObject() throws Exception
{
Car car = new Car();
String[] infos = carInfo.split(",");
car.setBrand(infos[0]);
car.setMaxSpeed(Integer.parseInt(infos[1]));
car.setPrice(Double.parseDouble(infos[2]));
return car;
}
//2 getObjectType方法 返回对象的class对象
public Class<Car> getObjectType()
{
return Car.class;
}
//3 定义Bean是否是单例的
public boolean isSingleton()
{
return false;
}
}
使用自定义工厂初始化Bean的配置文件:
<!-- 这里的car1实际上就是用CarFactoryBean工厂创建的, p:carInfo为工厂的字符串参数-->
<bean id="car1" class="com.baobaotao.fb.CarFactoryBean"
p:carInfo="红旗CA72,200,20000.00"/>
参考
Spring3.x企业应用开发实战