spring有三种方式创建实例。
分别是构造器,静态工厂,实例工厂。
我们较常用的是使用构造器创建。比如有个Person类:

一,构造器的方式

public class Person{
    private long id;
    private String name;
    //getter,setter方法省略
}

一种是使用无参构造器的方式创建,配置如下:

<bean id="person" class="xxx.xxx.Person"></bean>

另一种是使用settter注入属性值,配置如下:

<bean id="person" class="xxx.xxx.Person">
        <property name="name" value="xxx"></property>
        <property name="id" value="xxx"></property>
    </bean>

还有一种是使用有参构造器注入属性,此时Person类需要有一个有参构造器,配置如下:

pubic Person(long id,String name){
    this.id = id;
    this.name = name;
}
<bean id="person" class="xxx.xxx.Person">
        <constructor-arg name="id" value="xxx"></constructor-arg>
        <constructor-arg name="name" value="xxx"></constructor-arg>
    </bean>

二,静态工厂的方式

工厂类:
public class StaticFactory {
    
    public static Person createPerson(){
        return new Person();
    }
}
配置静态工厂
<bean id="person" class="xxx.xxx.StaticFactory" factory-method="createPerson"></bean>

三,实例工厂的方式

实例工厂类:
public class PersonFactory {
    
    public Person createPerson(){
        return new Person();
    }
}
配置实例工厂
<bean id="personFactory" class="xxx.xxx.PersonFactory"></bean>
<bean id="person" factory-bean="personFactory" factory-method="createPerson"></bean>

使用实例工厂创建实例需要先创建工厂实例,再使用工厂创建我们需要的实例。至于是实例工厂与静态工厂是否还有其它区别,暂时还不知道。。。


步履不停
38 声望14 粉丝

好走的都是下坡路