spring详解:通过FactoryBean自定义工厂初始化Bean

来源:互联网 发布:python ggplot2 编辑:程序博客网 时间:2024/06/05 09:04

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企业应用开发实战

BeanFactory和FactoryBean

 

0 0