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'}

  

 

posted @ 2020-10-19 14:32  orz江小鱼  阅读(241)  评论(0编辑  收藏  举报