美文网首页
Spring创建对象的三种方式

Spring创建对象的三种方式

作者: Yanl__ | 来源:发表于2019-12-10 11:17 被阅读0次

1. 通过构造方法

1.1 无参构造

默认是调用无参构造方法
在applicationContext.xml中进行配置

<bean id="peo" class="com.steer.pojo.People"/>

在测试类中使用getBean方法

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        // getBean("bean标签id值", 返回值类型)
        People people = ac.getBean("peo", People.class);
        System.out.println(people);

1.2 有参构造

实体类中必须有有参构造方法,可以通过constructor给实例对象赋值

    public People(int id, String name) {
        this.id = id;
        this.name = name;
        // System.out.println("执行有参构造方法");
    }

在applicationContext.xml中进行配置

    <bean id="peo" class="com.steer.pojo.People">
<!--        ref引用另一个bean, value 基本类型或String等-->
        <constructor-arg index="0" value="1"></constructor-arg>
        <constructor-arg index="1" value="张三"></constructor-arg>
    </bean>

constructor-arg中的参数
index: 表示实体类中的参数的位置
name:参数的名称
type:类型(区分开关键字和封装类int 和Integer)
在applicationContext.xml 中设置调用哪个构造方法创建对象,如果设定的条件匹配多个构造方法执行最后的构造方法

2. 实例工厂

2.1 首先要有一个实例工厂,才能生产对象

public class PeopleFactory{
    public People newInstance(){
        return new People();
    }
}

2.2 通过Spring创建对象
一般手写步骤,先自己实例化工厂,然后通过工厂来生产对象

PeopleFactory factory = new PeopleFactory();
People peo = factory.newInstance();
System.out.println(peo.toString());

Spring帮我们创建对象的方式:

<bean id="factory" class="com.steer.pojo.PeopleFactory"></bean>
<bean id="peo1" factory-bean="factory" factory-method="newInstance"></bean>

然后在测试类中使用getBean方法就可以生成对象了

3. 静态工厂

3.1 不需要创建工厂,快速创建对象
3.2 实现步骤

1.编写一个静态工厂,和实例工厂一样,只需要在方法上添加static

public class PeopleFactory {
//    public People newInstance(){
//        return new People(1, "测试实例工厂");
//    }

    public static People newInstance(){
        return new People(1, "测试静态工厂");
    }
}

2.bean的写法:不需要写factory-bean的属性

<bean id="peo2" class="com.steer.pojo.PeopleFactory" factory-method="newInstance"></bean>```

相关文章

网友评论

      本文标题:Spring创建对象的三种方式

      本文链接:https://www.haomeiwen.com/subject/etiwgctx.html