导航

Spring静态工厂和实例工厂创建bean

Posted on 2013-03-27 10:03  曙光城邦  阅读(913)  评论(0编辑  收藏  举报

1.静态工厂创建bean。 工厂类有一个公共的静态方法用于创建bean,隐藏了创建bean的细节,以及将创建的bean托管给容器。

配置:

 <!-- 静态工厂 -->
 <bean id="aProduct" class="com.StaticFactory"  factory-method="createProduct"> 
     <constructor-arg value="bccbb"></constructor-arg>
 </bean>

id: 工厂创建的bean的id

class:静态工厂的类

factory-method:静态工厂的静态创建bean方法

constructor-arg:用于给工厂方法传递参数。有时创建bean需要某些参数,可通过该属性传入工厂方法。

如:

public class StaticFactory{

public static Product createProduct(String id){//静态工厂方法。 它的参数由constructor-arg传入

return product;

}

..

}

 

2.实例工厂创建Bean。即容器中有一个工厂Bean,然后通过工厂bean和工厂方法(非静态)创建bean。

 <!-- 工厂bean -->
 <bean id="productFactory" class="com.Factory">
 </bean>

<bean id="productA" factory-bean="productFactory" factory-method="createProduct">
  <constructor-arg value="456"/><!--给工厂方法传递参数-->
</bean>

即:先创建工厂bean。
然后通过factory-bean factory-method指定工厂bean和工厂方法,来创建bean。
public class Factory{

//不是静态方法
public Product createProduct(String id){//工厂方法。 它的参数由constructor-arg传入 return product; } .. }