不使用Spring创建Bean实例,而是把Bean创建过程转移到开发者手中。
1. 静态工厂方法
//--创建工厂类
package com.erick.d1.hello;
public class StudentFactoryStatic {
public static Student getStudent(String name){
Student s = new Student();
s.setName(name);
return s;
}
}
<!-- 配置中的class指向工厂类,factory-method指向工厂方法,若有参数是用 constructor-arg 元素传入 -->
<!-- 由工厂生产出的bean还可以继续配置依赖或者设置值,通过 property 标签来指定 -->
<bean id="student" class="com.erick.d1.hello.StudentFactoryStatic" factory-method="getStudent">
<constructor-arg value="erick"></constructor-arg>
</bean>
2. 实例工厂方法
//--创建工厂类
package com.erick.d1.hello;
public class StudentFactoryInstance {
public Student getStudent(String name){
Student s = new Student();
s.setName(name);
return s;
}
}
<!-- 配置中的factory-bean指向工厂类,factory-method指向工厂方法,若有参数是用 constructor-arg 元素传入 -->
<bean id="student" factory-bean="studentFactory" factory-method="getStudent">
<constructor-arg value="erick"></constructor-arg>
</bean>
<bean id="studentFactory" class="com.erick.d1.hello.StudentFactoryInstance"/>
3. 说明
实例工厂需要spring来创建工厂对象。而静态工厂不需创建工厂对象。