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; } .. }