实例工厂
(1)编写实例工厂类、AirPlane类
public class AirPlaneInstanceFactory {
public AirPlane getAriPlaneByCaptainName(String captainName)
{
AirPlane airPlane=new AirPlane();
airPlane.setAirName("爱国者号");
airPlane.setCaptainName(captainName);
airPlane.setColor("red");
airPlane.setCustomerNumber(200);
return airPlane;
}
}
public class AirPlane {
private String captainName;
private Integer customerNumber;
private String airName;
private String color;
public AirPlane() {
}
public void setCaptainName(String captainName) {
this.captainName = captainName;
}
public void setCustomerNumber(Integer customerNumber) {
this.customerNumber = customerNumber;
}
public void setAirName(String airName) {
this.airName = airName;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return "AirPlane{" +
"captainName='" + captainName + '\'' +
", customerNumber=" + customerNumber +
", airName='" + airName + '\'' +
", color='" + color + '\'' +
'}';
}
}
(2)配置文件
<!-- 实例工厂 -->
<!-- 1、先配置出实例工厂对象 -->
<bean id="airPlaneInstanceFactory" class="com.orz.spring.bean.AirPlaneInstanceFactory" />
<!-- 2、配置我们需要创建的AirPlane使用哪个工厂创建 -->
<!-- factory-bean:指定使用哪个工厂实例 -->
<!-- factory-method:指定使用哪个工厂方法 -->
<!-- constructor-arg:可以设置指定方法的参数 -->
<bean id="airPlane2" class="com.orz.spring.bean.AirPlane" factory-bean="airPlaneInstanceFactory" factory-method="getAriPlaneByCaptainName">
<constructor-arg name="captainName" value="呵呵"/>
</bean>
(3)测试
@Test
public void test1()
{
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml");
AirPlane airPlane = applicationContext.getBean("airPlane2", AirPlane.class);
System.out.println(airPlane);
}
(4)结果
AirPlane{captainName='呵呵', customerNumber=200, airName='爱国者号', color='red'}