Spring-Bean-工厂bean-实例工厂
实例工厂
(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'}