关于spring:关于spring创建实例的三种方式

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>

应用实例工厂创立实例须要先创立工厂实例,再应用工厂创立咱们须要的实例。至于是实例工厂与动态工厂是否还有其它区别,临时还不晓得。。。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理