一.Bean的实例化方法如下三种
1.使用类构造器实例化
2.使用工厂方法(静态工厂方法、实例工厂方法)
3.实现FactoryBean接口
二.使用类构造器实例化:
在配置bean时,使用class属性指定类的全名称(即全类名)
三.工厂方法实例化
1.静态工厂方法:
方法就是将对象创建过程封装到静态方法中,当客户端需要对象时,只需要简单的调用静态方法。
要声明通过静态方法创建的bean,需要在bean的class属性中指定拥有该工厂方法的类,同时在factory-method属性中指定工厂方法的名称
,最后使用元素为该方法传递方法参数
静态方法如下所示
public class FruitFactory { public static Fruit createApple() { Fruit fruit =
new Fruit(); fruit.setType("apple"); return fruit; } public static Fruit
createPear() { Fruit fruit = new Fruit(); fruit.setType("pear"); return fruit; }
}
bean.xml中的配置如下所示
2.实例工厂方法配置方式:
将对象的创建过程封装到另一个对象实例的方法中。当客户端需要请求对象时,只需要简单的调用该实例方法。
使用方式:
先声明要使用实例化方法创建的bean
在第二个bean的factory-bean属性里指定拥有该工厂方法的bean
在factory-method属性里面指定该工厂方法的名称
实例方法如下所示
public class FruitFactory { //实例工厂方法 public Fruit createPeach(){ Fruit fruit =
new Fruit(); fruit.setType("Peach"); return fruit; } }
bean中的配置如下所示(无参数)
<bean id="fruitFactory" class="anhui.FruitFactory"></bean> <bean id="peach"
factory-bean="fruitFactory" factory-method="createPeach"></bean>
如果有参数,bean中的配置情况如下
<bean id="fruitFactory" class="anhui.FruitFactory"></bean> <bean id="peach"
factory-bean="fruitFactory" factory-method="createPeach"> <constructor-org>
index="0" value="peach"</constructor-org> </bean>
3.使用FactoryBean接口进行实例化
FactoryBean:由Spring提供
getObjectType:返回bean的实例
isSingleton:返回的bean是否是单例的。
配置时:
class指定为上面创建的FactoryBean实现类。实际返回的是FactoryBean的getObject方法返回的实例。
Property:为实现类的property
实现类代码如下所示
import org.springframework.beans.factory.FactoryBean; public class
FruitFactoryBean implements FactoryBean { //指定创建对象的方法 public Fruit getObject()
throws Exception { Fruit fruit = new Fruit(); fruit.setType("strawberry");
return fruit; } public Class<?> getObjectType() { return Fruit.class; } public
boolean isSingleton() { return true; } }
bean中的配置如下所示:
<bean id="strawberry" class="wanho.FruitFactoryBean"></bean>